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
    
    
    
     
  • 相关阅读:
    [BZOJ 2144]跳跳棋
    [NOIp 2015]信息传递
    [JLOI 2014]松鼠的新家
    [Luogu 2062]分队问题
    [Luogu 2090]数字对
    [NOIp 2015]运输计划
    [USACO 03FEB]Farm Tour
    [TJOI 2010]中位数
    IO密集型 计算密集型
    python 编码
  • 原文地址:https://www.cnblogs.com/jiaqi1719/p/15643306.html
Copyright © 2011-2022 走看看