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
    
    
    
     
  • 相关阅读:
    Java实战项目收集
    Drebin数据集
    网络“法官”
    沉醉
    孔方兄
    《Qt 5.9 C++开发指南》例程源码
    《论语》中那些耳熟能详的词汇
    破祟
    Qt使用UI编辑器添加的控件Icon运行时不显示
    Ubuntu格式化SD卡
  • 原文地址:https://www.cnblogs.com/jiaqi1719/p/15643306.html
Copyright © 2011-2022 走看看