jQuery/JS如何查找包含指定值的子数组并向其中push新元素
错误原因
- 你的代码
subarr = [].indexOf(val) > -1是对空数组执行查找,永远返回false,该布尔值作为数组索引时会被转为数值0,最终会错误操作第一个子数组,完全没有实现查找含目标值子数组的逻辑 - 缺少遍历外层数组的步骤,你没有逐个检查每个子数组是否包含目标值
val,自然无法定位到要操作的子数组
适配for循环的修复代码
var add = "purple"; var val = "white"; var arr = [ ["blue","green","brown"], ["white","gray","black"], ["yellow","pink","red"] ]; // 遍历所有子数组 for (let i = 0; i < arr.length; i++) { // 检查当前子数组是否包含目标值 if (arr[i].includes(val)) { arr[i].push(add); // 仅存在一个符合条件的子数组时可加break终止循环,提升性能 break; } }
如果需要兼容低版本浏览器,把includes替换为indexOf(val) > -1即可,功能完全一致,执行后得到的arr就和你预期的输出完全匹配。
内容的提问来源于stack exchange,提问作者BLUELIGHT BLUELIGHT
相关产品推荐
相关产品推荐

