繁体   English   中英

修改对象数组的对象

[英]Modify the objects of an array of objects

我想修改对象数组(jsonStudent)的对象。

   [
    { Student: 'Riya', Gender: 'Female', Pet: 'Timmy' },
    { Student: 'Happy', Gender: 'Male', Pet: 'Harry' },
    { Student: 'Tiya', Gender: 'Female', Pet: 'Timmy' },
   ]

我的预期输出是(输入):

  [ 
    {
     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
    }
   ]

为此,我使用了这行代码,但是我得到的不是所有对象,而是输出中的第一个对象,任何人都可以帮助我将所有对象作为我的预期输出。

        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);
console.log(jsonStudent);
const output = [];
for (var i = 0; i < jsonStudent.length; i++) {
  output.push({
    name: jsonStudent[i].Student,
    gender: jsonStudent[i].Gender,
    pet: jsonStudent[i].Pet,
    isActive: true,
    createdAt: new Date(),
    updatedAt: new Date()
  });
}
console.log(output);

做你所追求的。 我冒昧地在那里更改了相当数量,但这应该是不言自明的。

我认为您的问题是您没有将结果存储在任何地方...

第 2 行显示了output数组的创建(在 for 循环开始之前),然后每个学生的数据对象在第 4 行被推送到数组中。

最后,一旦循环完成并关闭, output数组就会记录到控制台。

前面的答案是完美的,但是如果你想要一个更实用的方法,你可以使用 map 来迭代你的数组。 如果您不想修改原始数组,可以使用 object.assign ,如示例中所示。

let newStudents = jsonStudents.map(student => {
    let newStudent = Object.assign({}, student);
    newStudent.isActive = true;
    newStudent.createdAt = new Date();
    newStudent.updatedAt = new Date();
    return newStudent;
});
console.log(newStudents);

如果您不关心修改原始数组,则可以执行以下操作:

    let newStudents = jsonStudents.map(student => {
        student.isActive = true;
        student.createdAt = new Date();
        student.updatedAt = new Date();
        return student;
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM