题目描述:找出数组 arr 中重复出现过的元素。 eg:
输入:[1, 2, 4, 4, 3, 3, 1, 5, 3]
输出:[1, 3, 4]
- 使用reduce方法:
/**
* 找出数组 arr 中重复出现过的元素
* @param arr
* @returns {Array}
*/
function duplicates(arr) {
var m = arr.reduce(function(pre,cur,index,arr){
console.log(pre,cur);
if(cur in pre){
pre[cur]++;
}else{
pre[cur] = 1;
}
return pre;
},{});
var n = [];
for(v in m){
if(m[v] > 1){
n.push(v);
}
}
return n;
}
console.log(duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3])); // ["1", "3", "4"]
注:我们数组里面为number值,这样处理完了以后,变为str类型的了
其中:
var obj={a:1};
console.log('a' in obj); // true
- 使用filter:
/**
* 找出数组 arr 中重复出现过的元素
* @param arr
* @returns {Array}
*/
function duplicates(arr) {
return arr.sort().filter((v,k)=>{
return arr[k]===arr[k+1]&&arr[k]!==arr[k-1];
})
}
console.log(duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3])); // [1, 3, 4]