美文网首页
数组去重的方法

数组去重的方法

作者: 李华炎 | 来源:发表于2018-10-29 01:10 被阅读0次
  1. 兼容所有浏览器的方式
/**
 * 实现功能:数组去重(数组中的每个元素都是对象)
 * 逻辑思路:第一层循环需要去重的数组;第二层循环要返回的数组中有没有某一个对象(第一层遍历的对象),
 * 有即跳过,没有就添加
 * @return 返回一个去重后的新数组
 */
Array.prototype.distinct = function () {
    var arr = this;
    var result = [];
    var flag = true; 
    for (var i = 0; i < arr.length; i++) { // 第一层循环
        flag = true; // 默认添加到要返回的数组result中
        for (var j = 0; j < result.length; j++) { // 第二层循环
            if (arr[i].userId == result[j].userId) { // 数组中元素对象的唯一值
                flag = false;
                // 如果第一层循环中的元素和结果数组中的某个元素相同,就不必再对比结果数组的剩余元素了
                // 改变j的值,结束第二层循环
                j = result.length;
            }
        }
        
        if (flag) {
            result.push(arr[i]);
        }
    }
    return result;
}

var arr = [{
    name: 'bb',
    age: 11,
    userId: 2
},{
    name: 'aa',
    age: 10,
    userId: 1
},{
    name: 'bb',
    age: 11,
    userId: 2
},{
    name: 'bb',
    age: 11,
    userId: 2
},{
    name: 'cc',
    age: 12,
    userId: 3
},{
    name: 'bb',
    age: 11,
    userId: 2
},{
    name: 'cc',
    age: 12,
    userId: 3
}];

var newArr = arr.distinct();
console.log(newArr);
  1. 使用forEach和indexOf
Array.prototype.distinct = function (){
    var arr = this,
    result = [],
    arr.forEach(function(v, i ,arr){  //这里利用map,filter方法也可以实现
        var bool = arr.indexOf(v,i+1);  //从传入参数的下一个索引值开始寻找是否存在重复
        if(bool === -1){
            result.push(v);
        }
    })
    return result;
};

相关文章

  • ES6数组去重

    普通数组去重 方法1 方法2 对象数组去重

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • 数组

    数组 数组常用方法 数组去重

  • 数组去重

    分类 非对象数组去重 对象数组去重 分类一 --- 非对象数组去重 方法一: set(es6常用) 方法二:red...

  • js:数组去重

    数组去重的常见写法: 数组去重封装成方法: es6的数组去重(Array.from):

  • 数组对象去重方法:

    数组对象去重方法: // 数组对象去重 ```` toRetry = (arr = []) => { let re...

  • JS实现数组去重常用的六种方法

    双重for循环去重 includes实现数组去重 indexOf实现数组去重 利用set方法去重 ES6 Arra...

  • 数组去重方法

  • 数组去重方法

    const array = [1, 2, 3, '1', true, 'true', 9, 1, true] 使用...

网友评论

      本文标题:数组去重的方法

      本文链接:https://www.haomeiwen.com/subject/uwsvtqtx.html