精华内容
下载资源
问答
  • 采用数组中的reduce方法,遍历数组,也是通过对象访问属性的方法 var arr = [{ key: '01', value: '乐乐' }, { key: '02', value: '博博' }, { key: '03', value: '淘淘' },{ key: '04', value: '哈哈' ...
  • 本文实例讲述了JS实现数组简单去重数组根据对象中的元素去重操作。分享给大家供大家参考,具体如下: js数组简单去重 var arr1 = [1, 2, 3, 4, 5, 6, 3, 4, 3]; function arrayUnique1(arr) { var result = [], ...
  • 本文实例讲述了JS数组对象去重操作。分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>www.jb51.net js数组对象去重&...
  • 本文实例讲述了JS实现数组去重及数组对象去重功能。分享给大家供大家参考,具体如下: 大家在写项目的时候一定遇到过这种逻辑需求,就是给一个数组进行去重处理,还有一种就是给数组内的对象根据某一个属性,比如...
  • JS数组对象去重

    2021-10-09 11:06:58
    开发调试中遇到这种数据,需求是去掉多余重复的数据,很明显是数组对象去重,怎么办呢?开整 2.普通数组去重 先来讲一下普通数组去重吧 const arr = [1,2,2,2,3,1]; const newArr = new Set(arr); console.log...

    目录

    1.问题发现:

    2.普通数组去重

    3.数组对象去重

    (1)冒泡排序

    (2)利用对象访问属性的方法,判断对象中是否存在key

    (3)利用reduce


    1.问题发现:

     开发调试中遇到这种数据,需求是去掉多余重复的数据,很明显是数组对象去重,怎么办呢?开整

    2.普通数组去重

    先来讲一下普通数组去重吧

    const arr = [1,2,2,2,3,1];
    const newArr = new Set(arr);
    console.log(newArr); //[1,2,3]

    3.数组对象去重

    开始这次的重点

    (1)冒泡排序

    var arr = [{name: 'a',id: 1}, {name: 'a',id: 2}, {name: 'b',id: 3}, {name: 'c',id: 4},
     {name: 'c',id: 5}, {name: 'b',id: 6}, {name: 'd',id: 7}];
    function deWeight() {
        for (var i = 0; i < arr.length - 1; i++) {
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[i].name == arr[j].name) {
                    arr.splice(j, 1);
                    //因为数组长度减小1,所以直接 j++ 会漏掉一个元素,所以要 j--
                    j--;
                }
            }
        }
        return arr;
    }
    
    

    如果业务需求后面重复的是覆盖之前的值,就将arr.splice(j, 1)改成arr.splice(i, 1)

    (2)利用对象访问属性的方法,判断对象中是否存在key

        //利用对象访问属性的方法,判断对象中是否存在key
        let result = [];
        let arr = [
     
        { id: 1, name: "张三", age: 15 },
     
        { id: 4, name: "John", age: 18 },
     
        { id: 2, name: "李四", age: 18 },
     
        { id: 1, name: "张三", age: 15 },
         
        { id: 5, name: "Jack", age: 18 },
     
        { id: 3, name: "王五", age: 10 },
     
        { id: 5, name: "Jack", age: 18 },
     
        { id: 4, name: "John", age: 18 },
     
        { id: 5, name: "Jack", age: 18 }
     
        ];
     
        var obj = {};
        for(var i =0; i<arr.length; i++){
           if(!obj[arr[i].id]){
              result.push(arr[i]);
              obj[arr[i].id] = true;
           }
        }
        

    (3)利用reduce

       let arr = [
     
        { id: 1, name: "张三", age: 15 },
     
        { id: 4, name: "John", age: 18 },
     
        { id: 2, name: "李四", age: 18 },
     
        { id: 1, name: "张三", age: 15 },
         
        { id: 5, name: "Jack", age: 18 },
     
        { id: 3, name: "王五", age: 10 },
     
        { id: 5, name: "Jack", age: 18 },
     
        { id: 4, name: "John", age: 18 },
     
        { id: 5, name: "Jack", age: 18 }
     
        ];
    let obj= {};
     
    arr= arr.reduce((preVal, curVal) => {
     
    if (!obj[curVal.id]) {
              obj[curVal.id] = true;
              preVal.push(curVal);
    }
     
    return preVal
     
    }, []) // 请注意,必须标记是数组的默认值

    暂时只想到这些方法了

    展开全文
  • js代码-数组 对象去重 (对象的所有属性相同才能认为相同)
  • 有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉,但是原生JS有排序,有筛选等等,但是就是没有数组去重怎么办呢? 这能怎么办,自己手动实现嘛。 数组不像对象和hash有唯一的标志特征(key)。所以,...
  • 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;
    	}
    

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

    展开全文
  • 数组对象: var str = [ {name: "张三",id: 1}, {name: "李四",id: 2}, {name: "王五",id: 3}, {name: "小明",id: 2}, {name: "小红",id: 1}, ]; 1、双层for循环 for(var i=0;i<str.length - 1;i++){...

    数组对象:

    var str = [
        {name: "张三",id: 1},
    	{name: "李四",id: 2},
    	{name: "王五",id: 3},
    	{name: "小明",id: 2},
    	{name: "小红",id: 1},
    		];

    1、双层for循环

    for(var i=0;i<str.length - 1;i++){
        for(var j = i+1;j<str.length;j++){
            if(str[i].id == str[j].id){
                str.splice(j,1);
                // splice删除了一个元素,下标要减一,否则循环会漏掉一个元素(多个相邻的元素 可能会漏掉删除元素)
                j--;
            }
        }
    }
    console.log(str);

    2、indexOf()

    var id = [];
    var arr = [];
    for(var i=0;i<str.length;i++){
        //判断在id这个数组中有没有找到id
        if(id.indexOf(str[i].id) == -1){
            //把id用push存进id这个数组中
            id.push(str[i].id);
            arr.push(str[i]);
        }
    }
    console.log(arr);

    3、for循环,利用对象属性的唯一性

    var result = {};
    for (var i = 0; i < str.length; i++) {
    	result[str[i]['id']] = str[i];
    }
    console.log(result);

    4、Map方法()

    has方法可以判断Map对象中是否存在指定元素,有则返回true,否则返回false

    set方法可以向Map对象添加新元素 map.set(key, value)

    values方法可以返回Map对象值的遍历器对象

    function getMap() {
    	let map = new Map();
    	for (let i of this.str) {
    		if (!map.has(i.id)) {
    			map.set(i.id, i);
    		}
    	}
    	this.str = [...map.values()];
    	console.log(this.str);
    };
    getMap();

    5、for循环

    obj中没有则添加 this.str[i].id 这个key,并把值设为true,后续相同则不添加

    function removal() {
    	let newArr = [];
    	let obj = {};
    	for (var i = 0; i < this.str.length; i++) {
    		if (!obj[this.str[i].id]) {
    			newArr.push(this.str[i]);
    			obj[this.str[i].id] = true;
    		}
    	}
    	console.log(newArr);
    };
    removal();

    展开全文
  • 问题:数组对象去重 方法一:es5冒泡排序法,去重arr(较好用) var arr = [{name: 'a',id: 1}, {name: 'a',id: 2}, {name: 'b',id: 3}, {name: 'c',id: 4}, {name: 'c',id: 6}, {name: 'b',id: 6}, {name: 'd...

    问题:数组对象去重

     方法一:es5冒泡排序法,去重arr(较好用)

    var arr = [{name: 'a',id: 1}, {name: 'a',id: 2}, {name: 'b',id: 3}, {name: 'c',id: 4},
     {name: 'c',id: 6}, {name: 'b',id: 6}, {name: 'd',id: 7}];
    function deWeight() {
        for (var i = 0; i < arr.length - 1; i++) {
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[i].name == arr[j].name) {
                    arr.splice(j, 1);
                    //因为数组长度减小1,所以直接 j++ 会漏掉一个元素,所以要 j--
                    j--;
                }
            }
        }
        return arr;
    }
    var newArr = deWeight();
    console.log('%c%s', 'color:red;', '方法一:es5,newArr', newArr);

     

    方法二:es5新建数据双重循环,去重arr2

    var arr2 = [{name: 'a',id: 1}, {name: 'a',id: 2}, {name: 'b',id: 3}, {name: 'c',id: 4},
     {name: 'c',id: 6}, {name: 'b',id: 6}, {name: 'd',id: 7}];
    var temp = [];
    function deWeightTwo() {
        arr2.forEach(function(a) {
            var check = temp.every(function(b) {
                return a.name !== b.name;
            })
            check ? temp.push(a) : ''
        })
        return temp;
    }
    var newArr2 = deWeightTwo();
    console.log('%c%s', 'color:red;', '方法二:es5,newArr2', newArr2);
    

     方法三:es6的Map(),去重arr3

    var arr3 = [{name: 'a',id: 1}, {name: 'a',id: 2}, {name: 'b',id: 3}, {name: 'c',id: 4},
     {name: 'c',id: 6}, {name: 'b',id: 6}, {name: 'd',id: 7}];
    let deWeightThree = () => {
        let map = new Map();
        for (let item of arr3) {
            if (!map.has(item.name)) {
                map.set(item.name, item);
            }
        }
        return [...map.values()];
    }
    let newArr3 = deWeightThree();
    console.log('%c%s', 'color:red;', '方法三:es6,newArr3', newArr3);

     

    方法四:es5,对象法去重arr4

    var arr4 = [{name: 'a',id: 1}, {name: 'a',id: 2}, {name: 'b',id: 3}, {name: 'c',id: 4},
     {name: 'c',id: 6}, {name: 'b',id: 6}, {name: 'd',id: 7}];
    // array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
    // (function(必选初始值或计算结束返回值, 必选当前元素, 可选索引, 可选原数组),可选函数初始值)
    var obj = {};
    function deWeightFour() {
        arr4 = arr4.reduce(function(a, b) {
            obj[b.name] ? '' : obj[b.name] = true && a.push(b);
            return a;
        }, [])
        return arr4;
    }
    var newArr4 = deWeightFour();
    console.log('%c%s', 'color:red;', '方法四:es5,newArr4', newArr4);

     

    展开全文
  • 1、js数组对象去重复并合并数值 <script> var arrs = [ {"id": "1","name": "张三","value": "1245"}, {"id": "1","name": "张三","value": "1360"}, {"id": "2","name": "李四","value": "1120"}, ...
  • Js数组对象去重的几种方法

    千次阅读 2021-02-02 15:29:10
    }, []) console.log(this.arr) }, 方法三:Map() has方法可以判断Map对象中是否存在指定元素,有则返回true,否则返回false set方法可以向Map对象添加新元素 map.set(key, value) values方法可以返回Map对象值的遍历...
  • js 数组对象去重合并

    2020-05-25 10:30:38
    let newArr = [], arr = [ { id:1, text: '1', text2: '2' }, { id:1, text3: '3' }, { id:2, text1: '4' }, { id:2, text2: '5' }, { id:3, text1: '5' }, ]; arr.forEach(function(item){
  • JS数组对象去重合并

    2020-06-09 10:54:58
    现有数组persons,数组中的对象有name一样,但是id和age不同的,说明是不同的人,现在的问题就是将相同名字的人归并到同一对象下一个属性中 let persons = [ {id: "1",name: "小明",age: "21"}, {id: "2",name: ...
  • 代码如下: /* *数组元素去重 */ if(typeof Array.prototype.distinct != “function”){ Array.prototype.distinct = function(){ this.sort(); for(var i=0;i<this.length-1;i++){ if($.isPlainObject(this[i]) ...
  • js数组对象去重处理

    千次阅读 2018-02-08 14:05:33
    js数组对象去重处理js的数组去重,是js常谈的问题,网上的解决办法很多例如这里边用的先排序的方式再去重的,还有一些ES6的方式这里暂不介绍了,下边还是保持es5的语法处理数组对象的去重,就像数据里边有歌曲,歌曲去重...
  • //因为数组长度减小1,所以直接 j++ 会漏掉一个元素,所以要 j-- j--; } } } return arr; } console.log(deWeight(arr)); var obj = {}; function deWeightFour(arr) { arr = arr.reduce(function(a, b) { obj[b....
  • 本文是参考了一篇文章后进行的扩展,参考文章地址... * 实现自定义数组对象去重 * @param arr 去重的数组 前提保证数组中的对象包含需要的去重的标志属性 * @para...
  • JS 数组对象去重

    2020-05-15 18:56:07
    我们先来说说简单的数组去重问题。 遍历去重法: function unique(arr) { const res = [] arr.forEach(item => { if(res.indexOf(item) < 0) { res.push(item) } }) return res } 使用 ES6 的 Set...
  • 本文实例讲述了JS实现的Object数组去重功能。分享给大家供大家参考,具体如下: 目标:实现成员为 Object 的数组去重。 注意,这里的数组成员为 Object,而不是数值或者字符串。 调用方法: arr = distinct_arr_...
  • js 数组对象去重

    2021-11-05 16:16:32
    js 数组对象去重 arrayDeduplicate(array) { let map = new Map() for (let item of array) { if (!map.has(item.id)) { map.set(item.id, item) } } return [...map.values()] },
  • 现在有这样一个数组 let arr = [ { a:1, b:1, c:1 }, { a:1, b:2, c:1 }, { a:1, b:1, c:2 }, { a:1, b:1, c:2 }, ] 我们现在要去除相同的一项 function deweight(arr){ let de_arr= [] arr.forEach(i =&...
  • 方法一:es5冒泡排序法,去重arr var arr = [{name: 'a',id: 1}, {name: 'a',id: 2}, {name: 'b',id: 3}, {name: 'c',id: 4}, {name: 'c',id: 6}, {name: 'b',id: 6}, {name: 'd',id: 7}]; function deWeight() { ...
  • //最终结果 [{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 2 3 4 5 ... 20
收藏数 19,666
精华内容 7,866
关键字:

js数组对象去重