实现对数据排序并按出现次数进行排序(用面向对象方式实现,用for循环的方式排序)
[1,4,2,1,3,2,1,4]传入方法中,应该输出如下结果:
1出现了3次
2出现了2次
4出现了2次
3出现了1次
这个问题怎么写,求解,想了半天没想到好的写法
实现对数据排序并按出现次数进行排序(用面向对象方式实现,用for循环的方式排序)
[1,4,2,1,3,2,1,4]传入方法中,应该输出如下结果:
1出现了3次
2出现了2次
4出现了2次
3出现了1次
这个问题怎么写,求解,想了半天没想到好的写法
[1,4,2,1,3,2,1,4].reduce((rst, n) => {
let obj = rst.find(({ name }) => n === name)
if (!obj) {
obj = { name: n, times: 1 }
rst.push(obj)
} else {
obj.times += 1
}
return rst
}, [])
.sort(({ times: a, name: c }, { times: b, name: d }) => {
if (b === a) return c - d
return b - a
})
.forEach(({ name, times }) => {
console.log(`${name}出现${times}次`)
})
10 回答11.6k 阅读
2 回答3.1k 阅读✓ 已解决
2 回答4.1k 阅读✓ 已解决
4 回答4.6k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
4 回答2k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决