JS多个/单个数组内去重/判重复

数组一与数组二名字相同

时候 对应赋值

 /**
         * res {all:{},split[] }
         */
        let data = res;
        //思路 把res返回的name 都过滤一遍 去掉.pdf 变成跟 this.tabData.name相同的字符串
        data.split.forEach(element => {
          element.name = element.name.replace(".pdf", "");
        });
        //根据 this.tabData.name== data.split.[index]的name 相同。 就 res.data赋值split名字相同的数据等于this.tabData.name相同的pdfdata中去
        for (let index = 0; index < data.split.length; index++) {
          this.tabData.forEach(tabDataindex => {
            if (tabDataindex.label == data.split[index].name) {
              tabDataindex.pdfdata = data.split[index];
            }
          });
        }
        // 如果data.all  里面有数据 push 多一个到最后 思路同上
        if (data.all) {
          data.all.forEach(element => {
            element.name = element.name.replace(".pdf", "");
            this.tabData.push({
              label: element.name,
              pdfdata: element,
              name: element.name
            });
          });
        }

单个数组内判定重复

let Setjyqarr=[ {jyjid: 1, jyqid: 1},
 {jyjid: 1, jyqid: 1},
{jyjid: 1, jyqid: 2},
 {jyjid: 2, jyqid: 1}]; for (let index = 0; index < Setjyqarr.length; index++) {
          for (let j=index+1; j < Setjyqarr.length; j++) {
            if (JSON.stringify(Setjyqarr[index]) == JSON.stringify(Setjyqarr[j])) {
               console.log("存在重复加油枪编号 请重新输入!");
            }
          }
        }

单个数组对象里面去重

let Setjyqarr=[ {jyjid: 1, jyqid: 1},
 {jyjid: 1, jyqid: 1},
{jyjid: 1, jyqid: 2},
 {jyjid: 2, jyqid: 1}]; for (let index = 0; index < Setjyqarr.length; index++) {
          for (let j=index+1; j < Setjyqarr.length; j++) {
            if (JSON.stringify(Setjyqarr[index]) == JSON.stringify(Setjyqarr[j])) {
               console.log("存在重复加油枪编号 请重新输入!");
            }
          }
        }

4单个数组里面 合并重复addressid 的ljjycls

原来
33333333 [ { addressid: 1, ljjycls: 1 },
  { addressid: 1, ljjycls: 1 },
  { addressid: 2, ljjycls: 2 },
  { addressid: 3, ljjycls: 1 } ]
效果
777777 [ { addressid: 1, ljjycls: 2 },
  { addressid: 2, ljjycls: 2 },
  { addressid: 3, ljjycls: 1 } ]


let sumarr=[]  
let listdataArr=[]   
if (List && List.length != 0) {
          for (let index = 0; index < List.length; index++) {
            for (let j = index + 1; j < List.length; j++) {
              if (List[index].addressid == List[j].addressid) {
                sumarr.push({ addressid: List[index].addressid, ljjycls: List[index].ljjycls + List[j].ljjycls });
              }
            }
          }//合并相同的到新数组
          console.log(4444, sumarr);
        

          for (let index = 0; index < List.length; index++) {
            const findIndex = listdataArr.findIndex(item => {
              return item.addressid === List[index].addressid;
            });
            if (findIndex < 0) {//如果没有符合条件的元素返回 -1
              listdataArr.push(List[index]);
            }
          }//原数组重复去重
       
          console.log(6666666, listdataArr);
          if (sumarr && sumarr.length != 0) {
            listdataArr.map((items, index) => {
              sumarr.map((item, i) => {
                if (items.addressid == item.addressid) {
                  listdataArr[index] = Object.assign(item);
                }
              });
            });
          }

          console.log(777777, listdataArr);
        }



优化版本

  let restRes = []; //建一个数组把原数组res.data去重合并相同的name的value
   /**
           * 原来 res data =[ { name: 1, value: 1 },{ name: 1, value: 1 },{ name: 2, value: 2 },{ name: 3, value: 1 } ]
           */
          res.data.forEach(element => {
            let index = restRes.findIndex(v => v.name == element.name);
            if (index == -1) {
              restRes.push({ name: element.name, value: element.value });
            } else {
              restRes[index].value += element.value;
            }
          });
          res.data = restRes;
          /**
           * 三步处理后 res data =[ { name: 1, value: 2 },{ name: 2, value: 2 },{ name: 3, value: 1 } ]

单个数组分组
在这里插入图片描述

let list=[{ ID: 1,name:"A"},
{ ID: 1,name:"B"},

{ ID: 2,name:'C'},
{ ID: 2,name:'D'},
{ ID: 2,name:'E'},    
  
{ ID: 3,name:'G'}, 
{ ID: 3,name:'F'},

{ ID: 4,name:'H'},
{ ID: 4,name:'I'}, 

{ ID: 7,name:'J'},

{ ID: 12,name:'K'}];
=> arr【   
 [{ ID: 1,name:A},{ ID: 1,name:B}],  
 [{ ID: 2,name:C},{ ID: 2,name:D},{ ID: 2,name:E}],
 [{  ID: 3,name:F},{ ID: 3,name:G}],
 [{ ID: 4,name:H},{  ID: 4,name:I}],
 [{ID: 7,name:J}],
 [{ ID: 12,name:K}],let    data = [];
 for(var i = 0; i < list.length; i++) {
    if(!data[list[i].ID]) {
        var arr = [];
        arr.push(list[i]);
        data[list[i].ID] = arr;
    }else {
        data[list[i].ID].push(list[i])
    }
}console.log(data);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值