# 找出数组重复次数最多的元素
# 描述:
给定一个字符串数组, 每一个元素代表一个 IP 地址,找到出现频率最高的 IP。
注:给定数据只有一个频率最高的 IP
# 样例:
lines = ['192.168.1.1', '192.118.2.1', '192.168.1.1'];
return '192.168.1.1';
1
2
2
# 题目分析:
说了一堆,其实就是找出数组重复次数最多的元素
思路:
用对象来处理,将元素赋值到属性上,判断之前有没有这个属性。
数组去重
虽然对象属性同样可以用来做数组去重,但是会将 number,NaN,undefined,null,变为字符串形式,因为对象的属性名就是一个字符串
# 代码:
/**
* @param ipLines: ip address
* @return: return highestFrequency ip address
*/
const highestFrequency = function(ipLines) {
var [obj, max, name] = [{}, 1, ''];
ipLines.forEach(value => {
if (obj[value]) {
// 已经有值了 就把值+1
obj[value]++;
if (obj[value] > max) { // 判断重复次数有没有超过当前最高的
max = obj[value]; // 重复次数
name = value; // 当前元素
}
} else {
// 没有值 就初始化一个值
obj[value] = 1;
}
});
return name;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21