JS -- 数组中去重问题

今天碰到一个去重的问题,大概就是,要将对象的描述都整合在一起。
类似于描述人,可以有姓名,身份证号,性别,身高,兴趣爱好等。
多种描述都是针对同一个人,即姓名和身份证号唯一,那就应该整合在同一个对象里。

  • JS中提供了Object.assign()方法,用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
  • 数组的splice()方法用于在原数组中进行添加、替换、删除元素
  • 数组的push()方法用于栈形式的数组进行追加操作

我的思路是这样的:

  • 建一个新的数组,将旧的数组进行遍历,一个一个放进去;
  • 放进去之前,进行检查,这个检查是通过遍历新的数组,如果正打算放进去的这个json对象里的name和idNumber有一个是存在的,那就将这个json对象和这里面的json对象进行assign赋值,得到综合体;
  • 先把原先不完整的通过splice()方法去掉;
  • 再把这个完整的放进新数组
var oldArr = [{
    "name": "老皮",
    "idNumber": 123456,
    "age": 22
    },
    {
    "idNumber": 123456,
    "photoNumber": 666
    },
    {
    "name": "老皮",
    "identity": "student"
    },
    {
    "name": "老灰",
    "idNumber": "6688",
    "photoNumber": 333
    }
]
var newArr = [];
for(var i=0;i<oldArr.length;i++){
    for(var j=0;j<newArr.length;j++){
        if(newArr[j].name === oldArr[i].name 
            || newArr[j].idNumber === oldArr[i].idNumber

        ){
            Object.assign(oldArr[i],newArr[j]);
            newArr.splice(j,1) ;
        }
        
    }
    newArr.push(oldArr[i]);
}
console.log(newArr);

调试结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值