如何删除数组中指定的某一项或几项

    var arr1 = [
      {a: "111", b:"222"},
      {c:"333", d:"444"},
      {e:"555", f: "666"},
      {g: "777", h:"888"},
      {i:"999", j:"000"},
      {k:"111", l: "222"}
    ]
    var arr2 = [
      {a: "111", b:"222"},
      {i:"999", j:"000"}
    ]

现在有两个数组,arr1和arr2,arr1是初始数组,arr2是arr1中选中的数组,需要将选中的数组的内容在arr1中删除,我采用的是如下方法

	function removeList(originList, delList) {
      var newArr = originList
      delList.forEach((Element1, index1) => {
        originList.forEach((Element2, index2) => {
          if (isObjectValueEqual(Element1, Element2)) {
            newArr.splice(index2, 1)
          }
        })
      })
      originList = newArr
      return originList
    }

    // 只要两个对象的名和键值都相同。那么两个对象的内容就相同了
    // 1.用Object.getOwnPropertyNames拿到对象的所有键名数组
    // 2.比对键名数组的长度是否相等。否=>false。真=>3
    // 3.比对键名对应的键值是否相等
    // 通过判断对象中键名组成的数组长度和名称是否相等来判断两个对象是否相等
    function isObjectValueEqual(a, b) {
      var aProps = Object.getOwnPropertyNames(a);
      var bProps = Object.getOwnPropertyNames(b);
      if (aProps.length != bProps.length) {
        return false;
      }
      for (var i = 0; i < aProps.length; i++) {
        var propName = aProps[i]

        var propA = a[propName]
        var propB = b[propName]
        if ((typeof (propA) === 'object')) {
          if (this.isObjectValueEqual(propA, propB)) {
            return true
          } else {
            return false
          }
        } else if (propA !== propB) {
          return false
        } else { }
      }
      return true
    }

removeList()是函数主体,其中isObjectValueEqual()是单独封装的用来判断两个对象是否相同,运行removeList(arr1, arr2),
注意:
1、因为splice()函数是直接操作原数组,因此直接运行即可改变原来的数组,得到相应结果,如果不想改变初始数组,请用备份数组进行操作
2、因为是直接比较的数组中某项的内容,因此出现重复的项也会删除,所以需要注意初始数组的唯一性

 	var arr1 = [
	      {a: "111", b:"222"},
	      {c:"333", d:"444"},
	      {e:"555", f: "666"},
	      {g: "777", h:"888"},
	      {i:"999", j:"000"},
	      {k:"111", l: "222"}
	    ]
	var arr2 = [
	      {a: "111", b:"222"},
	      {i:"999", j:"000"}
	    ]
    removeList(arr1, arr2)
    console.log(arr1);

结果:
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript中,有几种方法可以删除数组中的某一项。 方法一:使用splice方法 splice方法是一个通用的数组操作方法,可以实现增删改操作。要删除数组中的某一项,可以使用splice方法,并指定删除的起始位置和删除的数量。例如,要删除数组arr中的前两项,可以使用以下代码: ``` arr.splice(0, 2); ``` 其中,第一个参数0表示起始位置的索引,第二个参数2表示要删除的数量。执行该代码后,原数组arr中前两项将被删除,arr的长度将为7,数组内容为[3, 4, 5, 6, 7, 8, 9]。 方法二:使用filter方法 filter方法是一个高阶函数,可以通过迭代循环判断数组中的每一项,并返回符合条件的新数组。要删除数组中的某一项,可以使用filter方法,并返回不包含要删除项的新数组。例如,要删除数组arr中的元素3,可以使用以下代码: ``` arr = arr.filter((item) => { return item !== 3; }); ``` 执行该代码后,原数组arr中的元素3将被删除,arr的长度将为8,数组内容为[1, 2, 4, 5, 6, 7, 8, 9]。 如果要同时删除多个指定的项,可以在filter方法的回调函数中设置多个条件,例如: ``` arr = arr.filter((item) => { return item !== 1 && item !== 3 && item !== 4; }); ``` 执行该代码后,原数组arr中的元素1、3和4将被删除,arr的长度将为6,数组内容为[2, 5, 6, 7, 8, 9]。 使用splice方法和filter方法都可以删除数组中的某一项,具体选择哪种方法取决于你的需求和个人偏好。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值