gpt4 book ai didi

javascript - 如何使用 native javascript 制作 `groupBy`

转载 作者:行者123 更新时间:2023-11-30 20:40:17 25 4
gpt4 key购买 nike

如何用原生javascript实现groupBy

groupBy的定义】创建一个对象,该对象由通过 iteratee 运行集合的每个元素的结果生成的键组成。分组值的顺序由它们在集合中出现的顺序决定。每个键对应的值是一个负责生成键的元素数组。 iteratee 用一个参数调用:(值)。

【期待输出】
groupBy([6.1, 4.2, 6.3], Math.floor);
//=> { '4': [4.2], '6': [6.1, 6.3] }

groupBy(['一', '二', '三'], '长度');
//=> { '3': ['一', '二'], '5': ['三'] }

最佳答案

您可以使用 reduce 并公开一个通用 group-by-key 函数

function groupBy(arr, groupByKeyFn )
{
return arr.reduce( (acc, c) => {
var key = groupByKeyFn(c);
acc[key] = acc[key] || [];
acc[key].push(c)
return acc;
}, [])
}

现在你可以使用这个函数了

var arr1 = [6.1, 4.2, 6.3];
var arr2 = ['one', 'two', 'three'];

console.log( groupBy(arr1, s => Math.floor(s) ) );
console.log( groupBy(arr2, s => s.length ) );

演示

function groupBy(arr, groupByKeyFn) {
return arr.reduce((acc, c) => {
var key = groupByKeyFn(c);
acc[key] = acc[key] || [];
acc[key].push(c)
return acc;
}, {})
}

var arr1 = [6.1, 4.2, 6.3];
var arr2 = ['one', 'two', 'three'];

console.log( groupBy(arr1, s => Math.floor(s) ) );
console.log( groupBy(arr2, s => s.length ) );

关于javascript - 如何使用 native javascript 制作 `groupBy`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49357039/

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