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

JavaScript如何批量更新数组中所有对象的属性值并按比例上调薪资

原代码问题排查

你的代码存在以下几个错误,导致无法得到预期结果:

  • 属性名访问错误:遍历的每个元素对象存为salaryObj,薪资对应的属性是salary,你写的salaryObj.salaryObj是不存在的属性,取值为undefined
  • 上调比例写死:代码中固定乘10,没有使用传入的raise形参,无法适配不同的上调比例
  • 返回结构错误:map回调仅返回了计算后的薪资数值,丢失了name等其他属性,没有返回完整的对象结构
  • 边界处理错误:传入空数组时应直接返回空数组,不需要返回包含空对象的[{}]
  • 缺少返回值:计算得到的raiseArray没有被return,函数默认返回undefined
  • 未实现取整逻辑:没有按要求对计算后的薪资做向上取整处理
正确实现代码
function raiseSalary(arr, raise) {
  if (arr.length === 0) return [];
  return arr.map(employee => {
    const updatedSalary = Math.ceil(employee.salary * (1 + raise / 100));
    return {
      ...employee,
      salary: updatedSalary
    };
  });
}
实现说明
  • 采用展开运算符...employee保留原对象的所有属性,仅覆盖更新salary字段,不会修改原始数组的内容,避免副作用
  • 使用Math.ceil()对计算后的薪资做向上取整,满足取整要求
  • 直接返回map遍历生成的新数组,逻辑简洁
  • 传入示例参数测试时,计算结果完全匹配预期:3000上调10%为3300、2000上调10%为2200、4500上调10%为4950

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:03:43