我在联系人的下方
var groups = {"GROUP":[{'G1: [C1,C2,C3........C500000]},
{'G2': [C1,C2,C3........C500000,D1,D2,D3........D500000]}
.....]
}
现在我使用lodash将javascript数组拆分成n个大小的块,如下所示
_.each(groups,function(group){
var n = 50;
var lists = _.groupBy(group, function(element, index){
return Math.floor(index/n);
});
lists = _.toArray(lists );
console.log(lists )
})
这在客户端工作正常,但在nodejs中没有。节点js的输出如下
[["C1","C1....]]
数组不会拆分为块,而是以单个数组形式出现。
预期数组应为
[["C1","C1"....,"c50"],["C51","C1"....,"c100"]...]
我在nodejs中使用lodash 4.17.4。请告知
答案 0 :(得分:1)
这必须与在浏览器中使用不同版本而不是在节点中有关,因为如果查看groupBy in Lodash 4.17.4的代码,您可以清楚地看到传入的函数,{{1} },只用一个参数调用,即键,而不是键和索引:
iteratee
查看function groupBy(collection, iteratee) {
return reduce(collection, (result, value, key) => {
key = iteratee(value) // <- no index here
if (hasOwnProperty.call(result, key)) {
result[key].push(value)
} else {
baseAssignValue(result, key, [value])
}
return result
}, {})
}
的所有git历史记录,我并不感到惊讶,这种行为随着时间的推移而发生了变化。前段时间它完全从使用一些通用的iteratee(可能包括索引)改为更简单的东西,显然不包括索引。
如果我是你,我会用reduce语句实现这种分块行为:
groupBy.js