js数组排序问题

发布于 2022-09-12 04:40:45 字数 169 浏览 10 评论 0

实现对数据排序并按出现次数进行排序(用面向对象方式实现,用for循环的方式排序
[1,4,2,1,3,2,1,4]传入方法中,应该输出如下结果:
1出现了3次
2出现了2次
4出现了2次
3出现了1次

这个问题怎么写,求解,想了半天没想到好的写法

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一花一树开 2022-09-19 04:40:45
var numCount = [1,4,2,1,3,2,1,4].reduce((numCount, num) => {
  if(numCount[num] == null) {
    numCount[num] = 0;
  }
  numCount[num]++;
  return numCount;
}, {})

Object.keys(numCount)
.map(key => ({num: +key, count: numCount[key]}))
.sort((a, b) => b.count - a.count)
.forEach(({num, count}) => {
  console.log(`${num}出现了${count}次`)
})
↘紸啶 2022-09-19 04:40:45
[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}次`)
  })
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文