错误使用方式  根据数组中某些元素是否选中删除
// 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);
}
}