JavaScript如何从指定下标遍历对象数组修改属性及修复引用错误
报错原因
- 循环边界超出合法范围:数组的合法下标为
0到library.length - 1,原有代码中i <= library.length的判断会导致最后一次循环时i等于数组长度,此时library[i]为undefined,访问undefined.id就会抛出引用错误。 - 无赋值逻辑:
library[i].id - 1仅完成了减法运算,没有将结果回写到id属性,无法实现属性更新。
修复后的实现代码
如果你的执行逻辑是先删除对应下标的元素,再调用updateId更新后续id,使用以下代码即可:
function updateId(index) { // 循环终止条件改为i < library.length,避免下标越界 for (let i = index; i < library.length; i++) { // 减法结果赋值回id属性 library[i].id -= 1; } }
如果你的执行逻辑是先调用updateId再删除元素,需要把循环起始值改为i = index + 1,避免修改到待删除元素的id值。
内容的提问来源于stack exchange,提问作者as-0234
相关产品推荐
相关产品推荐

