在数组中求1,2,3,4分别出现的次数

[1,1,1,2,3,4] => [3,1,1,1]
[1,1,1,1] => [4,0,0,0]
[1,2,2,2]=> [1,3,0,0]

阅读 2.3k
4 个回答
const count = (arr) => {
  const ans = [0,0,0,0,0]
  
  for(let i = 0; i< arr.length; ++i) {
    ++ans[arr[i]]
  }

  return [ans[1],ans[2],ans[3],ans[4]]
}
新手上路,请多包涵

可以使用hash表来存储,key是数组中的值,value是遍历时出现的次数

reduce 版本

const getCountsArr = (arr) => arr.reduce((prev, next) => (prev[next - 1]++, prev), [0, 0, 0, 0]);
console.log(getCountsArr(arr));
function counterItem(arr){
    const recorder =[0,0,0,0]
    return arr.reduce((p,c)=>{
        p[c-1]++
        return p
    },recorder)
}

运行结果:
image.png

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题