如何使用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}, ]
代码逻辑说明
- 初始化
matchedCount变量,用于统计已处理的符合条件的元素数量,初始值为0 - 使用
for...of遍历数组中的每个对象 - 若当前元素的
value为null,直接跳过不处理 - 当
value大于updatevalue时,将其替换为updatevalue + matchedCount,随后matchedCount自增,确保下一个符合条件的元素使用递增后的偏移量 - 函数返回修改后的数组(如果希望保留原数组,可以在循环中创建新对象并收集到新数组中,例如
const newList = []; newList.push({...item, value: ...}))
内容的提问来源于stack exchange,提问作者learntocode2468
相关产品推荐
相关产品推荐

