lodash将数组拆分为nodejs

时间:2017-03-12 16:00:14

标签: javascript node.js lodash

我在联系人的下方

 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。请告知

1 个答案:

答案 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