使用Javascript的映射,减少或过滤来计算数组中元素的出现次数

时间:2019-03-14 16:53:23

标签: javascript

给出一个元素数组,例如[9,9,9,2,2,5],如何使用数组的高阶函数在数组[9 => 3,2 => 1,5 => 1]中创建元素及其频率的映射映射,过滤和缩小。

2 个答案:

答案 0 :(得分:1)

ES6版本应该大大简化

let arr =  [9, 9, 9, 2, 5];
let acc = arr.reduce((acc, val) => acc.set(val, 1 + (acc.get(val) || 0)), new Map());

// Convert the Map to an Array to be displayed correctly
console.log(Array.from(acc));

答案 1 :(得分:0)

这个想法与其他答案相同,但是它没有打印正确的地图,所以我要发布正确的地图。

let arr =  [9, 9, 9, 2, 5];
let res = arr.reduce((acc, cur) => (!acc[cur] ? acc[cur] = 1 : acc[cur]++, acc), {})
console.log(res)