Javascript 如何在JSON变量数组中进行更改(比如分配新的键和值)?

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 =>

员工内部的变量是否可以全局修改?比如在employee变量中附加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对象没有更改