美文网首页
数组过滤(元素为对象)

数组过滤(元素为对象)

作者: minusplus | 来源:发表于2019-08-25 21:06 被阅读0次

由对象组成的数组 对照删除

一个表格,类似于下图,选中以后,做成纯前端批量删除

在这里插入图片描述

数据源

arr2是全部的数据,arr1是勾选的数据
        let arr1 = [
          { code: "123456781",color: "芭比粉"},
          { code: "123456783",color: "芭比粉"},
          { code: "123456785",color: "芭比粉"}
        ];
        let arr2 = [
          { code: "123456781",color: "芭比粉"},
          { code: "123456782",color: "芭比粉"},
          { code: "123456783",color: "芭比粉"},
          { code: "123456784",color: "芭比粉"},
          { code: "123456785",color: "芭比粉"},
          { code: "123456786",color: "芭比粉"}
        ]

简单写法

        /*
        *       every方法,只要有一项不满足条件就返回false,也就是说必须每一项都得满足才能返回true。返回的是布尔值。
        *       filter方法,只要条件满足,我就将此元素返回出去,返回的是元素。
        *       在本示例中,只要arr1中存在与arr2中相同的元素,我就返回false。也就是说,我拿着arr2中
        *  的第一项去和arr1中的每一项去比较,如果code都不相等,满足所有条件,我就返回true。
        *       在filter中,只要条件为true,我就将这一项返回出去,就实现了批量删除的效果。
        */
        let arr3 = arr2.filter(item=>{
            return arr1.every(item2=>{
                return item.code != item2.code;
            })
        })
        
        console.log(arr1,'arr1');
        console.log(arr2,'arr2');
        console.log(arr3,'arr3');
在这里插入图片描述

for循环写法,因为arr2会改变,所以采用倒序的方法,也可以重新定义一个变量,来保存arr2,不过得是深拷贝才好。

        for(let i = arr2.length - 1; i >= 0; i--){
           for(let j = 0; j < arr1.length;j++){
               if(arr2[i].code == arr1[j].code){
                   arr2.splice(i,1);
               }
            }
         }
         console.log(arr1,'arr1');
         console.log(arr2,'arr2');
在这里插入图片描述

总结

一个是考察 every 和 filter 的用法,every 是必须所有项都满足条件才返回true,返回的是布尔值,filter 是返回满足条件的元素,返回的是元素。顺便说一下 some ,他和 every 相反,只要有一个满足条件,就返回true。另一个是for循环和深拷贝或浅拷贝的问题。

相关文章

  • 数组过滤(元素为对象)

    由对象组成的数组 对照删除 一个表格,类似于下图,选中以后,做成纯前端批量删除 数据源 arr2是全部的数据,ar...

  • $.grep()过滤数组元素

    $.grep()过滤数组元素 $.grep() : 查找满足过滤函数的数组元素,原始数组不受影响。语法格式为jQu...

  • js 对象数组去重

    目的 过滤掉数组里面指定属性相同的元素(一个对象)

  • 通过reduce方法明白in的用法

    计算数组中每个元素出现的次数 判断对象是否为数组/对象的元素/属性:格式:(变量 in 对象)......注意当“...

  • 深度遍历数组

    创建一个函数,接收一数组为参数,如果数组内元素为一个数组,则将其内部的元素取出作为根数组的元素,如果元素为对象进行...

  • js总结方法(待整理)

    过滤数组某元素 向一个对象数组里面添加新的属性var arry= [{a:11,b:22,c:33,d:44},{...

  • NSArray

    数组中元素排序: res为需要排序对数组, 数组中元素为NEWModel类型对对象、是一个模型。 下面代码的作用就...

  • 删除对象数组中的属性

    /** * 从对象数组中删除属性为objPropery,值为objValue元素的对象 * @param Arra...

  • Java基础语法_Day14

    一、对象数组 对象数组概述 A:基本类型的数组:存储的元素为基本类型int[] arr={1,2,3,4}B:对象...

  • iOS杂碎2

    NSPredicate用法之一: 数组元素为对象时,通过对象的某个属性快速筛选出数组中的对象 关于NSPredic...

网友评论

      本文标题:数组过滤(元素为对象)

      本文链接:https://www.haomeiwen.com/subject/lbbkectx.html