最近在牛客网JS的题目。非打广告,大家可以多学习学习。
输入例子:
duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()
输出例子:
[1, 3, 4]
将传入的数组arr中的每一个元素value当作另外一个新数组b的key,然后遍历arr去访问b[value],若b[value]不存在,
则将b[value]设置为1,若b[value]存在,则将其加1。可以想象,若arr中数组没有重复的元素,则b数组中所有元素均为1;
若arr数组中存在重复的元素,则在第二次访问该b[value]时,b[value]会加1,其值就为2了。
最后遍历b数组,将其值大于1的元素的key存入另一个数组a中,就得到了arr中重复的元素。
function duplicates(arr) {
var a = [],b = [];
for
(var i =
0
; i < arr.length; i++){
if
(!b[arr[i]]){
b[arr[i]] =
1
;
continue
;
}
b[arr[i]]++;
}
for
(var i =
0
; i < b.length; i++){
if
(b[i] >
1
){
a.push(i);
}
}
return
a;
}