zoukankan      html  css  js  c++  java
  • js 一次性删除数组中的多个元素

             
    错误使用方式  根据数组中某些元素是否选中删除
    // arr.forEach((item, index) => {
    //     if(item.checked) {
    //         arr.splice(index, 1);
    //     }
    // });
                   正确使用方式举例:
                    // filter 使用方式
                    arr = arr.filter((item) => !item.checked);
      
    // 逆向循环 处理嵌套较深的方式 for (let i = arr.length - 1; i >= 0; i--) { for (let j = arr[i].arr2.length - 1; j >= 0; j--) { if (arr[i].arr2[j].checked) { arr[i].arr2.splice(j, 1); // 如果当前item 中的 arr2 删除完,当条item也一起删除 if(!arr[i].arr2.length) { arr.splice(i, 1); } } } }

    用正向for循环或者forEach遍历数组的话,在方法体内部splice都得不到正确的结果,解决方法是使用逆向循环,从后往前循环,正向循环会索引改变,结果不正确。
    方法一,用 filter
    
    var arr = [2, 3, 5, 7];
    arr = arr.filter(item => item !== 5);
    方法二,用逆向循环
    var arr = [2, 3, 5, 7]; for (let i = arr.length - 1; i >= 0; i--) { if (arr[i] === 5) { arr.splice(i, 1); } }

    参考网友:https://www.cnblogs.com/ouchen0312/p/7798096.html
    
    
    
     
  • 相关阅读:
    BF算法和KMP算法
    Python课程笔记 (五)
    0268. Missing Number (E)
    0009. Palindrome Number (E)
    0008. String to Integer (atoi) (M)
    0213. House Robber II (M)
    0198. House Robber (E)
    0187. Repeated DNA Sequences (M)
    0007. Reverse Integer (E)
    0006. ZigZag Conversion (M)
  • 原文地址:https://www.cnblogs.com/jiaqi1719/p/15643306.html
Copyright © 2011-2022 走看看