фрагмент JavaScript в цикле для массива - PullRequest
0 голосов
/ 19 ноября 2018

Я хочу взять вывод массива, как показано ниже:

 [a,
  b,
  c,
  d,
  e,
  f]

и разрезать его на разделы, а затем вывести каждый новый массив на новую строку следующим образом:

 [a,b
  c,d
  e,f]

Вотто, что я имею до сих пор:

var data = "";
for (i = 0; i < 4; i+=2) {
data += output.slice(i,2);

}
return data;

Я работаю над этим уже некоторое время, пробую разные вещи, чтобы сделать эту работу, но не повезло.Я новичок в JS, поэтому мне нужна помощь.

Ответы [ 4 ]

0 голосов
/ 19 ноября 2018

Хотя ответа zos0K должно быть достаточно для нарезки, я хотел бы отметить один момент: если вы просто хотите вывести строку и ничего не делать с полученными нарезанными массивами, я бы порекомендовал вам напрямую добавить их в строку и затем распечатайте его как подходящий для создания нового массива для каждой пары строк. В то время как он выполняет свою работу, Array.prototype.slice каждый раз возвращает новый массив, и создание новых массивов может довольно быстро стать дорогим.

0 голосов
/ 19 ноября 2018

let data = ['a', 'b', 'c', 'd', 'e', 'f']
    
var output = "";
for (i = 0; i < data.length; i+=2) { 
    output += data.slice(i, i+2).join(",") + "\n";
}
console.log(`[${output.substring(0, output.lastIndexOf("\n"))}]`);
0 голосов
/ 19 ноября 2018

Предполагая, что они являются только символами (1 символ), и нет пустых символов, вы можете join, сопоставить символы как пары, используя регулярные выражения /(.+?){2}/g, map до char,char и, наконец, join с\n.

let output = ['a', 'b', 'c', 'd', 'e', 'f'],
    data = output.
           join('').
           match(/(.+?){2}/g).
           map(s => s.split('').join(',')).join('\n');


console.log(data);
0 голосов
/ 19 ноября 2018

Поскольку у вас есть шесть элементов в вашем массиве, вам нужно итерировать до 6, а не 4. Лучший способ сделать это - использовать длину вашего массива, поэтому, если длина изменяется, вам не нужно менять цикл , Когда вы берете ломтик, вы также хотите slice(i, i+2)

Если вы просто хотите создать строку, вы можете добавить символ \n в каждой итерации:

let output = ['a', 'b', 'c', 'd', 'e', 'f']

var data = "";
for (i = 0; i < output.length; i+=2) { 
    data += output.slice(i,i+2).join(" ") + "\n";
}
console.log(data);
...