在javascript中,我正在寻找一种处理数组的方法,使集合中的短重复序列(元组)减少到更紧凑集合。我想将一个长度为3n的数组转换成长度为的集合,其中。将“原始”javascript数组缩减为一个更紧凑的(对象)数组
下面是一个假想的例子:
// A flat (1-dimensional) array of numbers for input
var input = [
1, 11, 5,
2, 12, 10,
3, 13, 6,
4, 14, 11,
... ];
// A custom "lambda". This is my main intent, the rest is just plumbing.
var formatData = function(a,b,c) {
return { foo: a, bar: b, woot: c };
};
var output = input.reduceMulti(3, formatData); // ficticious 'reduceMulti'!
// output:
// [
// { foo: 1, bar: 11, woot: 5 },
// { foo: 2, bar: 12, woot: 10 },
// { foo: 3, bar: 13, woot: 6 },
// { foo: 4, bar: 14, woot: 11 },
// ...
// ]
另外,在output
这些对象可以很容易地字符串或数组,如果formatData
返回不同的东西。
我在寻找一个很像reduce
的解决方案,除了能够降低多个值。
高性能奖励点,但最终解决方案应该是可读的,可维护的和可用的。
做你打算做'输入'变量列表的清单还是现有的分配权? – Hrishi 2014-10-07 04:27:43
@Hrishi'input'数组只是一个简单的一维数组,格式化为使三个组更清晰。 (它是正确的。) – aaaidan 2014-10-07 04:36:30
你想要更多...本地数组函数或速度?一个'for'循环通常要快得多。 – 2014-10-07 04:56:49