题目描述:找出数组 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]