面试题--计算数组每项出现的次数

226 阅读1分钟

今天面试遇到这个题目, 如何计算数组各项出现的次数?

可惜没答对, 事后打开电脑一顿敲, 结果是得出来了. 但是总感觉有更好的方法

有没大佬指点指点.

let sourceArr = [1, 3, 3, 2, 5, 5, 5, 6, 7, 7] // 源数组
let resArr = [] // 结果
let temp = [] // 暂存

sourceArr.forEach(item => {
    let count = 0 // 初始化计数
    sourceArr.forEach(sub => {
        if (item === sub) count++
    })
    if (!temp.includes(item)) { // 过滤重复出现
        temp.push(item)
        resArr.push([item, count])
    }
})

console.log(resArr) // [ [ 1, 1 ], [ 3, 2 ], [ 2, 1 ], [ 5, 3 ], [ 6, 1 ], [ 7, 2 ] ]

// 好看的格式
let newArr = resArr.map(item => {
    return item[0] + '*' +item[1]
})

console.log(newArr) // [ '1*1', '3*2', '2*1', '5*3', '6*1', '7*2' ]