查找数组中重复元素

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

猜你喜欢

转载自blog.csdn.net/weixin_42995876/article/details/87985027