Пусть это мой вклад: "0.1412898495873448 -0.03307049805768848 -0.0002348551519150674 0.0007142371877833145 -0.01250041632738383 0.4052674201000387 -0.02541421100956797 -0.02842612870208528 1803.701163338969 1796.443677744862 1986.31441429052 1442.354524622483"
Что такое элегантный способ определения функции «группировки» массива?
Сильвестра имеет this конструктор. Для этого требуется вложенный массив.
Достаточно просто сделать строку в массив чисел, используя String.split()
и map
и друзей.
Что-то не в отличие от этого:
var nums = line.split(/ |\n/);
nums.map(function(num) {return parseFloat(num);});
Но я думаю, что Javascript отсутствует функция функционального стиля, который может «группа» моя 16-массив в 4 ряда по 4 цифр.
Я подумал, может быть, полезная библиотека JS, такая как underscore, могла бы меня охватить.
Не похоже.
Какой самый элегантный и/или эффективный способ сделать это? У меня есть, чтобы использовать цикл for?
function nest(array, range) {
var l = array.length;
var ret = [];
var cur = null;
for (var i=0; i<l; ++i) {
if (!(i%range)) {
cur = [];
ret.push(cur);
}
cur.push(array[i]);
}
return ret;
}
Node говорит мне, что это работает:
> function nest(array, range) {
... var l = array.length;
... var ret = [];
... var cur = null;
... for (var i=0; i<l; ++i) {
..... if (!(i%range)) {
....... cur = [];
....... ret.push(cur);
....... }
..... cur.push(array[i]);
..... }
... return ret;
... }
undefined
> nest([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],4)
[ [ 0, 1, 2, 3 ],
[ 4, 5, 6, 7 ],
[ 8, 9, 10, 11 ],
[ 12, 13, 14, 15 ] ]
>
Можно ли придумать лучший способ сделать это?
То, что вы делаете, кажется прекрасным. Вероятно, есть много способов сделать это, вот один из них -> http://jsfiddle.net/C6L6g/, но я действительно думаю, что вы делаете это лучше. – adeneo
Вы можете упростить 'nums.map (parseFloat)' – elclanrs
Возможный дубликат: http://stackoverflow.com/questions/8495687/split-array-into-chunks – basilikum