JavaScript二维数组查找并修改指定元素的高效实现方法
JavaScript二维数组查找指定元素并修改属性的实现方案
你可以结合嵌套的Array.find()方法实现需求,原生的find方法在匹配到第一个符合条件的元素后就会自动终止遍历,不需要依赖抛异常、自定义标记变量的hack方案,实现代码如下:
let target; // 遍历外层数组,只要匹配到目标元素就立刻终止所有遍历 matriz.find(row => { target = row.find(item => item.codigo === id); // 内层find找到目标则返回真值,触发外层find终止 return target; }); // 匹配到目标后修改属性 if (target) { target.clicou = !target.clicou; console.log('y: ', target); }
方案说明
- 性能表现和你现有的遍历方案一致,找到目标后立刻停止所有遍历,不会执行多余的循环逻辑
- 因为你的数组元素是引用类型的对象,拿到的
target是原数组中对象的引用,修改它的属性会直接同步到原数组,不需要额外写回操作 - 天然支持id不存在的兜底场景,不会抛出异常,仅需判断
target是否为真值即可执行后续逻辑
你原本使用forEach嵌套+抛异常的方案存在明显缺陷:如果没有提前定义BreakException变量,会直接抛出未捕获的引用错误,阻塞后续代码执行,不建议在生产环境使用。
内容的提问来源于stack exchange,提问作者The Apprentice
相关产品推荐
相关产品推荐

