#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 это намного круче 😉