对象数组去重

   //对象数组的去重
    function uniqObjInArray(objarray) {
      let len = objarray.length;
      let tempJson = {};
      let res = [];
      for (let i = 0; i < len; i++) {        //取出每一个对象
        tempJson[JSON.stringify(objarray[i])] = true;
      }
      let keyItems = Object.keys(tempJson);
      for (let j = 0; j < keyItems.length; j++) {
        res.push(JSON.parse(keyItems[j]));
      }
      return res;
    }

  

let objArr = [
      {
        InvoiceItemCode: ‘2‘,
        InvoiceItemName: ‘年后‘,
        Amount: 0,
      },
      {
        InvoiceItemCode: ‘2‘,
        InvoiceItemName: ‘年后‘,
        Amount: 0,
      },
      {
        InvoiceItemCode: ‘3‘,
        InvoiceItemName: ‘年后333‘,
        Amount: 0,
      },
    ]

  

 let res3 = uniqObjInArray(objArr);
    console.log("res3 is ", res3);

  

原文地址:https://www.cnblogs.com/LFxanla/p/12178922.html

时间: 2024-10-10 01:50:10

对象数组去重的相关文章

ES6 set和map数据结构对对象数组去重简单实现

自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式 let arr = [1, 2, 2, 3, 4] function unique (arr) { return [...new Set(arr)] } console.log(unique(arr)) // [1, 2, 3, 4] 但是当数组的项不再是简单的数据类型时,比如是对象时,这种方法就会导致错误,比如下面的结果 let arr = [ { name: 'a', num: 1}, { name: 'b',

js 对象数组去重问题

在项目中定义对象数组是非常常见的,这就免不了要对对象数组进行去重.当然不能简单的使用===来解决问题,因为这时候数组中的类型为对象类型,即使完全相同的两个对象也不相等的.下面的例子说明一切: {}==={}//fasle []===[]//fasle 所以应该使用其他方法来判断两个对象是否相等,能代表这个对象的唯一性的属性,比如id. 使用id举例: var arr=[ {id:01,name:'jack'}, {id:02,name:'tome'}, {id:01,name:'jack'},

使用reduce的方法实现对象数组去重

在开发中和面试当中,数组去重问题往往是受宠儿,那用最短的代码解决这个问题会使效率得到更大的提升.普通的数组,我们可以通过filter过滤方法进行去重,详情见本人博客:http://www.cnblogs.com/mmykdbc/p/8422419.html 那当是一个对象数组的时候呢,filter就显得相形见绌了,再用那种笨的一个一个遍历的方法会使得工作效率大打折扣,这个时候,需要用到reduce叠加方法,上代码: let arr = [{"all": 1}, {"all&q

原生JavaScript对象数组去重,重构为对象{pro1:[hash], pro02: [hash]}

function unique(objArr) { var result = {}; var proObj = objArr[0]; for(var pro in proObj){ var hash = []; for(var i = 0; i < objArr.length; i++){ var obj = objArr[i]; for(var pros in obj){ if(pros === pro){ var val = obj[pros]; if(!hash[val]){ var va

好像不是最全的数组去重方法

这一篇文章,我们讲解一下数组去重. 1.最简单粗暴地方式,两重for循环 let arr = [9, 5, 6, 5, '1', '1', true, 5, true]; for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if(arr[i] === arr[j]){ arr.splice(j,1); } } } console.log(arr); // [9, 5, 6, &quo

JS 数组常见操作汇总,数组去重、降维、排序、多数组合并实现思路整理

壹 ? 引 JavaScript开发中数组加工极为常见,其次在面试中被问及的概率也特别高,一直想整理一篇关于数组常见操作的文章,本文也算了却心愿了. 说在前面,文中的实现并非最佳,实现虽然有很多种,但我觉得大家至少应该掌握一种,这样在面试能解决大部分数组问题.在了解实现思路后,日常开发中结合实际场景优化实现,提升性能也是后期该考虑的. 本文主要围绕数组去重.数组排序.数组降维.数组合并.数组过滤.数组求差集,并集,交集,数组是否包含某项等知识点展开,附带部分知识拓展,在看实现代码前也建议大家先自

js 数组去重(数组元素是对象的情况)

js数组去重有经典的 几种方法 但当数组元素是对象时,就不能简单地比较了,需要以某种方式遍历各值再判断是否已出现. 因为: 1.如果是哈希判断法,对象作哈希表的下标,就会自动转换成字符型类型,从而导致所有元素都相等,这时判断方法不再有意义.一般最后数组就只剩一个 2.如果是直接比较法,则因为对象在内存中是按引用访问的,属性值相同的对象也不会相等,简单的直接判断不再有意义.一般最后数组还是原样 所以就需要进行值的比较 当然了,也可以换着法来将相应对象转为字符串(不是默认的那种[object Obj

es 数组去重,数组里面的对象去重

// 数组去重 { const arr = [1,2,3,4,1,23,5,2,3,5,6,7,8,undefined,null,null,undefined,true,false,true,'中文','','','hello','中文']; // 第一种 const r = [...new Set(arr)]; console.log(r); // [1, 2, 3, 4, 23, 5, 6, 7, 8, undefined, null, true, false, "中文", &qu

JS对以对象组成的数组去重

这是从https://segmentfault.com/q/1010000006954351参考的,达到了我要去重的功能,可是具体的原理,我其实没懂,有大神可以指教一下吗? var hash = {};//arr是要去重的对象数组 arr = arr.reduce(function(item, next) { hash[next.name] ? '' : hash[next.name] = true && item.push(next); return item }, []) consol