Добавление строк в массив — Javascript

#javascript #arrays

#javascript #массивы

Вопрос:

У меня есть массив текста:

 var text = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s");
 

Я хотел бы добавить элементы в массив в соответствии с заданным числом, а затем сохранить их в новом массиве. Например, если я выберу 3, то результирующими строками в новом массиве (terms) будут: ["a b c", "d e f", "g h i", ...] etc

Я посмотрел на Join и не могу заставить это работать — похоже, он способен только сложить весь массив вместе. Я предполагаю, что мне нужно использовать вложенный цикл, но, похоже, я не могу заставить это работать. Вот моя попытка:

 //Outer loop
for (i = 0; i < text.length; i  ) {
    //Inner loop
    for (j = i; j < i   $numberWords; j  ) {
        newWord = text[j];
        newPhrase = newPhrase   " "   newWord;
    }
    terms.push(newPhrase);
    i = i   $numberWords;
}
 

Ответ №1:

Вы можете использовать различные функции массива, например:

 var input = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s");
var output = new Array();
var length = 3;
for (var i = 0; i < input.length; i  = length) {
    output.push(input.slice(i, i   length).join(" "));
}
alert(output);
 

Вариант приведенного выше примера:

 var input = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s");
var output = new Array();
var length = 2;
while (input.length) {
    output.push(input.splice(0, length).join(" "))
}
alert(output);
 

Ответ №2:

Вот так:

 var text=new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s");

var n = 3;
var a = new Array();
for (var i = 0; i < Math.ceil(text.length / 3); i  )
{
  var s = '';
  for (var j = 0; (j < n) amp;amp; ((i*n) j < text.length) ; j  )
  {
    s  = text[n*i j]   ' ';
  }
  a.push(s.trim());
}
 

Комментарии:

1. Вы могли бы использовать .ceil() вместо .floor() того, чтобы захватить 19-й элемент.

2. ах да, у меня был floor() 1, когда я тестировал его и забыл скопировать. Но с splice это намного круче 😉