[英]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.