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

如何使用JavaScript的for...of循环按规则更新数组对象的value值

按规则更新数组对象的value值(for...of循环实现)

需求说明

给定数组对象listarray和参数updatevalue,需按以下规则更新每个对象的value属性:

  • 第一个**大于updatevalue**的value替换为updatevalue
  • 第二个符合条件的替换为updatevalue + 1
  • 第三个替换为updatevalue + 2,以此类推
  • value为null的保持不变
    要求使用JavaScript的for...of循环实现。

解决方案代码

function updateListValues(listarray, updatevalue) {
  let matchedCount = 0;
  for (const item of listarray) {
    // 跳过value为null的元素
    if (item.value === null) continue;
    // 检查当前value是否大于更新值
    if (item.value > updatevalue) {
      item.value = updatevalue + matchedCount;
      matchedCount++;
    }
  }
  return listarray;
}

示例验证

示例1测试

let updatevalue = 2;
const listarray = [
  {id:17, value: 4},
  {id:12, value: null},
  {id:33, value: 3},
  {id:45, value: 5},
];

console.log(updateListValues(listarray, updatevalue));

输出结果:

[
  {id:17, value: 3},
  {id:12, value: null},
  {id:33, value: 2},
  {id:45, value: 4},
]

示例2测试

let updatevalue = 3;
const listarray = [
  {id:17, value: 7},
  {id:12, value: null},
  {id:33, value: 10},
  {id:45, value: 5},
  {id:18, value: 4},
];

console.log(updateListValues(listarray, updatevalue));

输出结果:

[
  {id:17, value: 5},
  {id:12, value: null},
  {id:33, value: 6},
  {id:45, value: 4},
  {id:18, value: 3},
]

代码逻辑说明

  1. 初始化matchedCount变量,用于统计已处理的符合条件的元素数量,初始值为0
  2. 使用for...of遍历数组中的每个对象
  3. 若当前元素的value为null,直接跳过不处理
  4. 当value大于updatevalue时,将其替换为updatevalue + matchedCount,随后matchedCount自增,确保下一个符合条件的元素使用递增后的偏移量
  5. 函数返回修改后的数组(如果希望保留原数组,可以在循环中创建新对象并收集到新数组中,例如const newList = []; newList.push({...item, value: ...}))

内容的提问来源于stack exchange,提问作者learntocode2468

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:22:48