gpt4 book ai didi

javascript - lodash在nodejs中将数组拆分为 block

转载 作者:搜寻专家 更新时间:2023-10-31 23:23:44 24 4
gpt4 key购买 nike

我有以下联系人组

 var groups = {"GROUP":[{'G1: [C1,C2,C3........C500000]},
{'G2': [C1,C2,C3........C500000,D1,D2,D3........D500000]}
.....]
}

现在我使用 lodash 将一个 javascript 数组分成 n 个大小的 block ,如下所示

_.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 中不行。 node js的输出如下

[["C1","C1....]]

数组没有分成 block ,而是作为单个数组出现。

预期的数组应该是

[["C1","C1"....,"c50"],["C51","C1"....,"c100"]...]

我在nodejs中使用的是lodash 4.17.4,请指教

最佳答案

这一定与在浏览器中使用与在 Node 中不同的版本有关,因为如果你查看 groupBy in Lodash 4.17.4 的代码您可以清楚地看到您传入的函数 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
}, {})
}

查看 groupBy.js 的所有 git 历史,我对行为随时间发生变化并不感到惊讶。前一段时间,它从使用一些可能包含索引的通用迭代器完全更改为更简单的显然不包含索引的东西。

如果我是你,我会使用 reduce 语句实现这种分块行为:

function chunkArray(array, chunkSize) {
return _.reduce(array, function(result, value) {
var lastChunk = result[result.length-1];
if (lastChunk.length < chunkSize) lastChunk.push(value);
else result.push([value]);
return result;
}, [[]]);
}

关于javascript - lodash在nodejs中将数组拆分为 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42749649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com