JS对象数组去重简单有效方法

I.输入

JS对象数组去重是业务经常遇到的方法,稍微简洁一点的方法,如下:

    var data = [
      {"id": 1, "name": "李四1"},
      {"id": 1, "name": "李四2"},
      {"id": 1, "name": "李四3"},
      {"id": 1, "name": "李四1"},
      {"id": 5, "name": "李四5"},
    ];

P.去重方法(JS版本)

    function ArrSet(Arr, id) {
      var obj = {};
      const arrays = Arr.reduce((setArr, item) => {
        obj[item[id]] ? '' : obj[item[id]] = true && setArr.push(item);
        return setArr;
      }, []);
      return arrays;
    }
    
    console.log(ArrSet(data, 'id'));
    console.log(ArrSet(data, 'name'));

P.去重方法(TS版本)

	function ArrSet(Arr: any[], id: string): any[] {
		let obj: Object = {}
		const arrays = Arr.reduce((setArr, item) => {
			obj[item[id]] ? '' : (obj[item[id]] = true && setArr.push(item))
			return setArr
		}, [])
		return arrays
	}

O.打印台结果

JS对象数组去重简单有效方法_第1张图片

总结:思路分析

reduce()是数组的并归方法,其接受四个参数。
reduce(上一个并归值,当前项,当前项的索引,数组本身)
例:使用reduce()函数执行累加数组中所有数组的操作

    let values = [1,2,3,4,5,6];
    let sum = values.reduce((prev, cur, index, array) => prev + cur);

    console.log(sum) // 打印出21

显然函数每次迭代返回prev + cur,然后prev + cur 成为下一次的prev值来进行迭代,最终返回的就是
(1+ 2) + 3) + 4) + 5) + 6的过程。最后返回归并结果。
*注:方法reduce()还有一个类似方法reduceRight(),只是方向相反,并没有别的不同。

参考文献

[1] JavaScript高级程序设计(第四版)

你可能感兴趣的:(JS,js,javascript,数组)