Javascript 如何在JSON变量数组中进行更改(比如分配新的键和值)?
员工内部的变量是否可以全局修改?比如在employee变量中附加employee缺勤并在以后使用它Javascript 如何在JSON变量数组中进行更改(比如分配新的键和值)?,javascript,node.js,json,express,Javascript,Node.js,Json,Express,员工内部的变量是否可以全局修改?比如在employee变量中附加employee缺勤并在以后使用它 /* Returns for each employee its absences */ app.get('/absences', (req, res) => { members().then((employees) => { absences().then((absences) => { employees.forEach(employee =>
/* Returns for each employee its absences */
app.get('/absences', (req, res) => {
members().then((employees) => {
absences().then((absences) => {
employees.forEach(employee => {
/* For each employee find his absences */
employee = { ...employee, absences: absences.filter(abs => employee.userId == abs.userId) };
if (employee.userId == 649){
/* Printing the first for comparison of outputs */
console.log(employee);
}
});
console.log(employees[1]);
res.render('absences', { employees: employees });
});
});
});
我希望员工中的a员工的最终结果是:
{ crewId: 352, id: 713, image: 'http://place-hoff.com/300/400',
name: 'Ines', userId: 649,
absences: [
{ admitterId: null,
admitterNote: '',
confirmedAt: '2017-01-09T18:43:29.000+01:00',
createdAt: '2017-01-09T17:45:47.000+01:00',
crewId: 352,
endDate: '2017-01-11',
id: 2634,
memberNote: 'Nachmittag 0,5 Tage. Danke.',
rejectedAt: null,
startDate: '2017-01-11',
type: 'vacation',
userId: 649
},
{ admitterId: null,
admitterNote: '',
confirmedAt: '2017-03-21T18:29:49.000+01:00',
createdAt: '2017-03-15T14:54:31.000+01:00',
crewId: 352,
endDate: '2017-04-22',
id: 3748,
memberNote: 'Barcamp Salzburg',
rejectedAt: null,
startDate: '2017-04-21',
type: 'vacation',
userId: 649
},
{ admitterId: null,
admitterNote: 'Schönes langes WE!',
confirmedAt: '2017-04-26T15:12:11.000+02:00',
createdAt: '2017-04-26T09:55:40.000+02:00',
crewId: 352,
endDate: '2017-04-28',
id: 4753,
memberNote: '',
rejectedAt: null,
startDate: '2017-04-28',
type: 'vacation',
userId: 649
}
]
}
foreach循环之后的最终结果,它不会被修改:
{ crewId: 352,
id: 713,
image: 'http://place-hoff.com/300/400',
name: 'Ines',
userId: 649 }
您的代码打断了对数组中employee对象的“引用”
而是使用Object.assign
Object.assign(employee, {absences: absences.filter(abs => employee.userId == abs.userId) });
这将缺席属性添加到employee,而不是在代码中,employee对象基本上是浅拷贝的,因此数组中的employee对象没有更改