动态修改数组特定值:JS删除数组项后如何更新后续id并写回原数组
解决方案
你现有逻辑的核心问题是:仅对拆分后的id部分做了修改,没有将剩余的x、y、url属性拼接回完整的项字符串,也没有将修改后的完整项赋值回原数组的对应索引,因此原数组一直没有更新。
完整处理代码:
// 原有删除逻辑不变 var getVals = jQuery('#map_coords').val().split("-"); getVals.splice((getMap - 1), 1); // 遍历更新被删除位置之后所有项的id var arrLength = getVals.length; for (var i = (getMap - 1); i < arrLength; i++) { // 拆分当前项的所有属性段 var itemParts = getVals[i].split(","); // 直接更新id为当前索引+1(索引从0开始,id从1开始,完全匹配顺序) itemParts[0] = "[id:" + (i + 1); // 拼接回完整的项字符串 var updatedItem = itemParts.join(","); // 赋值回原数组对应位置,完成原数组更新 getVals[i] = updatedItem; } // 直接用join方法拼接成目标格式字符串,无需额外替换 var resultStr = getVals.join("-"); // 写回textarea jQuery('#map_coords').val(resultStr);
关键说明:
- 这里没有用正则替换原有id值,而是直接给id赋值为
i+1,完全和数组索引顺序绑定,避免原有id异常导致的替换错误 - 数组的
join('-')方法会直接用-拼接所有元素,比toString()加正则替换的方案更高效,也不会出现特殊字符转义问题
内容的提问来源于stack exchange,提问作者dominotrix
相关产品推荐
相关产品推荐

