关于计算 数组中重复数据的个数

最近在面试过程中,被面试官的这个问题问到,当时第一反应是使用双重for循环,截取字符串的时候,num++,显然这是一个极其笨拙的方法,当场被面试官指出错误。后来在网站上搜索相关帖子,总结出2个较为简单的办法,希望这次总结能对前端小白有所帮助。

方法一:

1. 首先定义一个数组和空对象

const arr = ['a', 'b', 'c', 'a', 'a', 'b', ''];

let obj = {}

2. 循环数组,把循环的数据定义为属性名,倘若未找到相关属性值,默认传1, 否则在原有的数字上加1

arr.forEach(item => {

obj[item] = (obj[item] + 1) || 1

})

console.log(obj)

打印obj内容如下

这样便可以得到相关数据的重复个数。

方法二:

1. 首先定义一个数组

const arr = ['a', 'b', 'c', 'a', 'a', 'b', ''];

2. 对array.reduce 中的prev 赋值即可

介于大家对reduce实现数据循环较为陌生,这里可以简单解释一下reduce 和普通数据循环有什么差距(forEach,map,filter)。reduce 的第一个参数得到的是迭代计算后的效果,所以可以使用第一个参数实现简单的数组去重和排序等

arr.reduce(function(prev, next){ 

        prev[next] = (prev[next] + 1) || 1;

        console.log( prev) 

    },{}); 

打印prev内容如下:

关于计算 数组中重复数据的个数_第1张图片

取最后一个数据即可! 

你可能感兴趣的:(javascript)