Google Charts切片设色时仅保留最新对象的实现方案咨询
解决方案
最优实现(时间复杂度O(1))
如果你确认仅需要保留最新索引对应的唯一属性,完全不需要循环遍历,直接替换整个lossColor对象即可:
// indices 为你需要保留的最新索引值(示例中对应数值3) lossColor = { [indices]: { color: "red" } };
该方案直接抛弃所有旧属性,仅生成包含最新键的新对象,是性能最高、逻辑最清晰的实现方式。
需保留循环逻辑的修正方案
如果你的业务场景必须保留遍历逻辑,可以在循环结束后提取最大索引,再重新生成对象:
// 先按原有逻辑完成遍历 for (let i = 1; i <= indices; i++) { lossColor = { ...lossColor, [i]: { color: "red" } }; } // 提取所有键的最大值,生成仅保留最新属性的对象 const maxKey = Math.max(...Object.keys(lossColor).map(Number)); lossColor = { [maxKey]: lossColor[maxKey] };
原有代码问题说明
- 最初的循环实现:仅在对象键数>=2时删除前一个索引的属性,循环执行过程中不会删除更早的旧键,最终会残留历史属性。
- 展开运算符实现:每次生成新对象时都会保留之前的所有属性,自然会叠加所有历史键值对。
内容的提问来源于stack exchange,提问作者user17153595
相关产品推荐
相关产品推荐

