删除数组中符合指定条件的元素

本文介绍如何使用JavaScript进行数组操作,包括保留或移除特定条件的元素。通过实例展示了如何过滤数组中年龄小于20岁的成员及如何根据另一数组来筛选元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 不符合指定条件,可能是指定数组array中的某一项不符合某一值的要求;或者是拿另一个数组arr对比,要求array只留下复合arr中的值或者删除掉复合arr中的值。

1.不符合某一值的要求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>删除数组中符合指定条件的元素</title>
</head>
<body>
    <script>
        let array = [
            { name:'小红', age:17 },
            { name:'小李', age:28 },
            { name:'小刘', age:16 },
            { name:'小张', age:31 },
            { name:'小赵', age:15 },
        ]
        //只留下年龄小于20的。
        for( let i=0,len = array.length; i < len; i++ ){
            if(array[i].age>20){
                console.log('删除元素:姓名:',array[i].name,'年龄:',array[i].age)
                array.splice(i,1)
                i--
                len--
            }
        }
        console.log('array:',array) //打印,符合条件.
    </script>
</body>
</html>

 打印结果:

 

当i--之后,array的长度已经发生了改变,所以定义的len的值已经不准确,也要跟着减去1.

2(1). 只留下在某一个指定数组范围内的元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>删除数组中符合指定条件的元素</title>
</head>
<body>
   <script>
     let array = [
         { name:'小田', id:1 },
         { name:'小红', id:2 },
         { name:'小李', id:3 },
         { name:'小刘', id:4 },
         { name:'小张', id:5 },
         { name:'小赵', id:6 },
     ]
     //只留下id属于 [1, 3, 5, 7 ] 中的元素
     let arr = [1, 3, 5, 7 ]
     for( let i=0,len = array.length; i < len; i++ ){
         for(let j=0; j < arr.length; j++){
             if(array[i].id == arr[j]){
                 break
             }else if(j == arr.length-1){
                 console.log('删除元素:姓名:',array[i].name,'id:',array[i].id)
                 array.splice(i,1)
                 i--
                 len--
             }
         }
     }
     console.log('array:',array) //打印,符合条件。
   </script>
</body>
</html>

既然是只留下,所以 判断出符合要求的时候,要break掉里边这一层的循环,当j == arr.length-1时,说明都已经对比过了,array[i]并不满足数组中的条件,老样子 i--,len--

 打印结果:

 

2(1). 删除在某一个指定数组范围内的元素.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>删除数组中符合指定条件的元素</title>
</head>
<body>
   <script>
      let array = [
          { name:'小田', id:1 },
          { name:'小红', id:2 },
          { name:'小李', id:3 },
          { name:'小刘', id:4 },
          { name:'小张', id:5 },
          { name:'小赵', id:6 },
      ]
      //删除id属于 [1, 3, 5, 7 ] 中的元素
      let arr = [1, 3, 5, 7 ]
      for( let i=0,len = array.length; i < len; i++ ){
          for(let j=0; j < arr.length; j++){
              if(array[i].id == arr[j]){
                  console.log('删除元素:姓名:',array[i].name,'id:',array[i].id)
                  array.splice(i,1)
                  i--
                  len--
                  break
              }
          }
      }
      console.log('array:',array) //打印,符合条件。
   </script>
</body>
</html>

删除某一元素之后, array数组长度改变,内层的for循环已经没必要继续后边的循环了。

 打印结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天命爱心职责~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值