You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:33:37