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