删除pack1后,如何高效重新索引JSON对象的pack系列键?
高效重命名对象键的实现方法
场景说明
删除所有对象的pack1键后,数组内对象的键为pack0、pack2、pack3、pack4,需要将这些键重新索引为pack0、pack1、pack2、pack3。
方法一:固定键直接重命名(性能最优)
如果明确知道要处理的键,直接逐个重命名是最高效的方式,无需额外的数组遍历或排序操作:
default_data.forEach(item => { // 将pack2重命名为pack1 if ('pack2' in item) { item.pack1 = item.pack2; delete item.pack2; } // 将pack3重命名为pack2 if ('pack3' in item) { item.pack2 = item.pack3; delete item.pack3; } // 将pack4重命名为pack3 if ('pack4' in item) { item.pack3 = item.pack4; delete item.pack4; } });
方法二:通用自动重索引(扩展性更强)
如果后续可能出现键的变化(比如删除其他pack系列键),可以用通用逻辑自动处理,无需修改代码:
default_data.forEach(item => { // 提取所有pack开头的键,并按数字部分排序 const sortedPackKeys = Object.keys(item) .filter(key => key.startsWith('pack')) .sort((a, b) => parseInt(a.slice(4)) - parseInt(b.slice(4))); // 遍历排序后的键,重新分配索引 sortedPackKeys.forEach((oldKey, newIndex) => { const newKey = `pack${newIndex}`; if (oldKey !== newKey) { item[newKey] = item[oldKey]; delete item[oldKey]; } }); });
内容的提问来源于stack exchange,提问作者Caloy Ponce
相关产品推荐
相关产品推荐

