精华内容
下载资源
问答
  • js实现数组对象去重

    2021-04-22 14:22:47
    数组对象去重,可直接复用 /** *数组对象去重 * * @param {Array} arr 去重数组 * @param {String} key 唯一标识 */ deduplication(arr, key) { const obj = {} // 利用reduce方法遍历数组,reduce第一个...

    数组对象去重,可直接复用

    /**
     *数组对象去重
     *
     * @param {Array} arr 去重数组
     * @param {String} key 唯一标识
     */
    deduplication(arr, key) {
      const obj = {}
      // 利用reduce方法遍历数组,reduce第一个参数是遍历要执行的函数,第二个参数是item的初始值
      return arr.reduce((item, next) => {
        if (!obj[next[key]]) {
          obj[next[key]] = true
          item.push(next)
        }
        return item
      }, [])
    }

    展开全文
  • 主要介绍了JS实现数组简单去重及数组根据对象中的元素去重操作,涉及javascript数组元素的遍历、判断、追加等操作实现去重功能的相关技巧,需要的朋友可以参考下
  • ES6有一个方法来判断两个对象是否相等 console.log(Object.is(a,b)) 但是这个相等,和我们平时要的相等可能不一样 这个方法判断的是a和b是不是同一个指针的对象 比如说 var a = { id:1 }; var b = a; console.log...

    ES6有一个方法来判断两个对象是否相等

    console.log(Object.is(a,b))
    

    但是这个相等,和我们平时要的相等可能不一样
    这个方法判断的是a和b是不是同一个指针的对象

    比如说

    var a = {
      id:1
    };
    var b = a;
    console.log(Object.is(a,b));   //true
    

    但是下面这种情况就不管用了

    var a = {
      id:1
    };
    var b = {
      id:1
    }
    console.log(Object.is(a,b));   //false
    

    当我们只需要两个对象的内容相同的时候,他就没效果了

    思路
    只要两个对象的名和键值都相同。那么两个对象的内容就相同了

    1.用Object.getOwnPropertyNames拿到对象的所以键名数组
    2.比对键名数组的长度是否相等。否=>false。真=>去到3
    3.比对键名对应的键值是否相等

    function isObjectValueEqual(a, b) {
        var aProps = Object.getOwnPropertyNames(a);
        var bProps = Object.getOwnPropertyNames(b);
    
        if (aProps.length != bProps.length) {
            return false;
        }
    
        for (var i = 0; i < aProps.length; i++) {
            var propName = aProps[i];
            var propA = a[propName];
            var propB = b[propName];
            if ( propA !== propB) {
                    return false;
            }
        }
        return true;
    }
    

    粗略一看没问题
    但是细心的同学发现如果 键值也是对象的话
    那这个方法就不管用了

    var a = {
        id:1,
        name:2,
        c:{
            age:3
        }
    };
    var b = {
        id:1,
        name:2,
        c:{
            age:3
        }
    }
    console.log(isObjectValueEqual(a,b));//false
    

    这个时候递归一下就可以解决了
    注意,递归的时候要判断prop是不是Object,然后会进入无限递归的死循环

    function isObjectValueEqual(a, b) {
         var aProps = Object.getOwnPropertyNames(a);
         var bProps = Object.getOwnPropertyNames(b);
          if (aProps.length != bProps.length) {
               return false;
          }
          for (var i = 0; i < aProps.length; i++) {
            var propName = aProps[i]
    
            var propA = a[propName]
            var propB = b[propName]
            if ((typeof (propA) === 'object')) {
              if (this.isObjectValueEqual(propA, propB)) {
                  // return true     这里不能return ,后面的对象还没判断
                } else {
                  return false
                }
            } else if (propA !== propB) {
              return false
            } else { }
          }
        return true
        }
        var a = {
            id:1,
            name:2,
            c:{
                age:3
            }
        };
        var b = {
            id:1,
            name:2,
            c:{
                age:3
            }
        }
        console.log(isObjectValueEqual(a,b));//true
    
    展开全文
  • 主要介绍了JS实现数组去重及数组对象去重功能,结合实例形式分析了ES5与ES6两种版本针对数组去重的相关操作技巧,需要的朋友可以参考下
  • 今天小编就为大家分享一篇关于js数组对象去重的两种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • js数组对象去重

    2020-09-25 10:03:00
    数组对象去重 最近项目中遇到一个数组对象去重的的问题,情景是数组对象中的每一个对象key 是相同的,但是key的数量不固定,研究了一下 ,想到了下面这种写法 // 数组对象去重 let mappingList = [ {id:1,name:'...

    数组对象去重

    最近项目中遇到一个数组对象去重的的问题,情景是数组对象中的每一个对象key 是相同的,但是key的数量不固定,研究了一下 ,想到了下面这种写法

    	// 数组对象去重
    	let mappingList = [ {id:1,name:'ceshi',type:'01',price:'33'},
    						{id:2,name:'ceshi',type:'02',price:'33'},
    						{id:3,name:'ceshi4',type:'01',price:'44'},
    						{id:4,name:'',type:'',price:''}]
    	let newArr = [];
    	let arrKey = Object.keys(mappingList[0]);
    	arrKey = remove(arrKey,'id') //去除数组中id
    	mappingList.forEach(ele => {
    		let str = ''
    		arrKey.forEach(key => {
    			str = str + ',' + ele[key]
    		})
    		newArr.push(str)
    	})
    	newArr = Array.from(new Set(newArr));
    	if(newArr.length != mappingList.length){
    		message('请勿输入重复******!');
    		return;
    	}
    

    目前想到的解决办法是在这个,大家如果有更好的想法 欢迎私信!

    展开全文
  • js数组对象去重的方法

    万次阅读 2019-04-10 15:14:06
    js数组对象去重的方法     今天在进行百度地图开发时,遇到多个重复的点位,需要将重复的点位进行过滤,正常的数组我们通常都能找到方法进行解决,但对对象数组进行去重处理,有点蒙圈,下面...

    js中数组对象去重的方法

        今天在进行百度地图开发时,遇到多个重复的点位,需要将重复的点位进行过滤,正常的数组我们通常都能找到方法进行解决,但对对象数组进行去重处理,有点蒙圈,下面我们就进一步研究

     var points = [{
                    lat: 22.687,
                    lng: 114.014
                }, {
                    lat: 22.687,
                    lng: 112.004
                }, {
                    lat: 22.837,
                    lng: 114.014
                },{
                    lat: 26.687,
                    lng: 115.014
                },{
                    lat: 22.687,
                    lng: 115.014
                },{
                    lat: 22.687,
                    lng: 114.014
                }];
    

        方法一:
    我们可以借助对象访问属性的方法,判断属性是否存在,如果已存在则进行过滤

      var result = [];
                var obj = {};
                for(var i =0; i<points.length; i++){
                    if(!obj[points[i].lat]){
                        result.push(points[i]);
                        obj[points[i].lat] = true;
                    }
                }
           console.log(result)  ;  
    

    结果为:
    在这里插入图片描述
        方法二:
    我们可以借助数组中reduce方法,访问遍历数组,其也是借助访问对象属性方法

    			var obj = {};
                points = points.reduce(function(item, next) {
                    obj[next.lat] ? '' : obj[next.lat] = true && item.push(next);
                    return item;
                }, []);
                 console.log(points)  ;  
    

    结果为:
    在这里插入图片描述
        对比上述两种方法,其产生的过滤结果一样

    参考来源:
    https://www.jb51.net/article/154887.htm

    展开全文
  • JS数组对象去重,ES6最简数组去重

    千次阅读 2020-07-10 23:01:23
    js数组对象去重 // 测试数据 // 比如我们处理 value 的去重 var arrList = [ {key: 1, value: "aaa"}, {key: 2, value: "bbb"}, {key: 3, value: "ccc"}, {key: 4, value: "aaa"}, {key: 5, value: "aaa"}, {...
  • js--数组对象去重

    2019-11-14 10:23:54
    js--数组对象去重
  • 数组去重 let arr2 = ['小王', '小王', '小张'] let newArr2 = [...new Set(arr2)] console.log("TCL: newArr2", newArr2) // TCL: newArr2 (2)["小王", ...数组对象去重 1.reduce()方法 let arr = [ ...
  • JS数组对象去重

    2017-08-18 09:42:11
    JS中对数组去重最好不要用unique方法,该方法主要是对dom节点数组去重,如果对普通的数组元素去重只会去掉与之相邻的重复元素,也就是如果数组中还有不相邻的重复元素存在,将不会被去掉,而且有时候会出现问题,...
  • Js数组对象去重

    2021-01-26 18:27:43
    JS数组对象去重 点击查看js简单数据去重 数组中的元素为对象时的去重方法 方法一:使用lodash库 let arr = [ { name: 'kobe', age: 42 }, { name: 'james', age: 36 }, { name: 'kobe', age: 42 }, { ...
  • 复杂数组去重: 数组对象去重 /*** * @param: arr ==> [{}]数组对象 * @param: type ===> 你传入该数组内的对象字段 */ duplicate (arr, type) { let newArr = []; let tArr = []; if (arr.length === 0)...
  • //最终结果 [{a:1,b:2},{a:'',b:2},{a:11},{a:11,b:''},{a:'',b:999},{b:132},{a:'',b:99},{a:'',b:90},{a:'',b:''},{a:''},{b:''},{a:1,b:''}] =>[ { a: 1, b: 2 }, { a: 11 }, { b: 132 } ] ...
  • 二、数组去重实现 遍历数组的方法 1)实现思路:新建一个数组,遍历要去重的数组,当值不在新数组的时候,也就是indeOf 为-1的时候,就加入到新的数组当中 2)实现代码: var arr1 = [3,6,4,9,4,8,8,5,6,8,...
  • var list = [1,1,1,3,2,3] //使用的new别的方法也可以 console.log(...new set(list))
  • js数组对象去重处理

    千次阅读 2018-02-08 14:05:33
    js数组对象去重处理js的数组去重,是js常谈的问题,网上的解决办法很多例如这里边用的先排序的方式再去重的,还有一些ES6的方式这里暂不介绍了,下边还是保持es5的语法处理数组对象的去重,就像数据里边有歌曲,歌曲去重...
  • 数组去重,运用ES6语法 ...数组对象去重,通过对象中的值去重,可选值,实际是根据reduce let arr = [ { id: 0, name: "猴子" }, { id: 1, name: "李白" }, { id: 2, name: "小乔" }, { id: 3, name: "貂
  • js 数组对象去重

    2021-03-14 14:01:09
    js 数组对象去重 var obj = {}; arr = arr.reduce(function(item, next) { obj[next.key] ? '' : obj[next.key] = true && item.push(next); return item; 37 }, []); 38 console.log(arr);

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,250
精华内容 7,700
关键字:

js实现数组对象去重