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

JavaScript遍历修改对象数组仅返回首个对象如何解决

问题说明
  • 待处理原数组jsonStudent内容:
[
  { Student: 'Riya', Gender: 'Female', Pet: 'Timmy' },
  { Student: 'Happy', Gender: 'Male', Pet: 'Harry' },
  { Student: 'Tiya', Gender: 'Female', Pet: 'Timmy' },
]
  • 处理规则:
    • 字段重命名:Student→name、Gender→gender、Pet→pet
    • 新增固定字段isActive,值为true
    • 新增时间字段createdAt、updatedAt,值为处理时刻的当前时间
  • 期望输出:
[ 
  {
    name: 'Riya',
    gender: 'Female',
    pet: 'Timmy',
    isActive: true,
    createdAt: 2022-06-28T17:55:53.907Z,
    updatedAt: 2022-06-28T17:55:53.907Z
  },
  {
    name: 'Happy',
    gender: 'Male',
    pet: 'Harry',
    isActive: true,
    createdAt: 2022-06-28T17:55:53.913Z,
    updatedAt: 2022-06-28T17:55:53.913Z
  },
  {
    name: 'Tiya',
    gender: 'Female',
    pet: 'Timmy',
    isActive: true,
    createdAt: 2022-06-28T17:55:53.919Z,
    updatedAt: 2022-06-28T17:55:53.919Z
  }
]

故障原因

原有代码存在两处问题:

  1. for循环缺少闭合的右大括号,循环体没有正确闭合,执行完第一次迭代后就终止,无法遍历全部数组元素
  2. 没有定义结果数组收集每个元素的处理结果,仅在循环内打印单个对象,无法得到完整的目标数组

原有未完成的代码片段:

console.log(jsonStudent);
for (var i = 0; i < jsonStudent.length; i++) {
  const nameVal = jsonStudent[i].Student;
  const genderVal = jsonStudent[i].Gender;
  const petVal = jsonStudent[i].Pet;
  const now = new Date();
  const input = {
    name: nameVal,
    gender: genderVal,
    pet: petVal,
  };
  input.isActive = true;
  input.createdAt = now;
  input.updatedAt = now;
  console.log(input);

修正代码

推荐写法(map遍历)

用数组原生map方法直接生成处理后的新数组,逻辑更简洁,不需要手动维护循环索引:

const result = jsonStudent.map(student => {
  const currentTime = new Date();
  return {
    name: student.Student,
    gender: student.Gender,
    pet: student.Pet,
    isActive: true,
    createdAt: currentTime,
    updatedAt: currentTime
  }
});

console.log(result);

兼容原有for循环写法

如果要保留原有的for循环逻辑,补全循环闭合括号,新增结果数组收集每次循环的处理对象即可:

console.log(jsonStudent);
const result = [];
for (var i = 0; i < jsonStudent.length; i++) {
  const nameVal = jsonStudent[i].Student;
  const genderVal = jsonStudent[i].Gender;
  const petVal = jsonStudent[i].Pet;
  const now = new Date();
  const input = {
    name: nameVal,
    gender: genderVal,
    pet: petVal,
    isActive: true,
    createdAt: now,
    updatedAt: now
  };
  result.push(input);
}
console.log(result);

补充:如果需要输出和示例完全一致的ISO标准时间字符串,将代码中new Date()替换为new Date().toISOString()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:09:21