JS中批量修改多对象键值:实现position字段循环减1需求
批量调整JavaScript对象的position字段(循环减1,0转9)
嘿,这个需求用模运算就能优雅搞定,完全不用手动逐个赋值,批量处理一步到位~
核心思路
利用模运算的循环特性,我们可以用一个通用的数学公式来处理所有对象的position:(当前position - 1 + 总对象数) % 总对象数
加总对象数的目的是避免出现负数(比如0-1=-1,加上10后变成9,再模10结果还是9,正好符合0转9的要求),同时对其他正数的position也能正确实现减1效果。
代码示例
假设我们的初始对象数组是这样的:
// 生成初始数组,position从0到9 const items = Array.from({ length: 10 }, (_, idx) => ({ name: `Item ${idx + 1}`, position: idx }));
批量更新的代码非常简洁:
const totalCount = items.length; // 这里固定是10,用length更通用,适配不同数量的对象 const updatedItems = items.map(item => ({ ...item, // 保留原对象的其他字段(比如name) position: (item.position - 1 + totalCount) % totalCount }));
效果验证
打印更新后的数组,你会看到position的变化完全符合预期:
- 原position=0 → 变成9
- 原position=1 → 变成0
- ...
- 原position=9 → 变成8
比如输出的前两个对象会是:
// [{name: "Item 1", position: 9}, {name: "Item 2", position: 0}, ...]
这个方案不仅适用于10个对象,只要是类似的循环调整position的场景,不管总数量是多少,公式都能通用,非常灵活~
内容的提问来源于stack exchange,提问作者Badetv
相关产品推荐
相关产品推荐

