对象不变异

时间:2017-02-20 01:21:09

标签: javascript express mongoose

尝试在for循环中改变对象。

我希望console.log(dish)使用dish属性记录ingredients对象,该属性包含一系列未归档的ingredient

当我记录dish.ingredients时,它会记录成分。

当我记录dish时,它会记录没有成分的dish个对象。

为什么会这样?

for (let dish of dishArray) {
  dish['ingredients'] = []
  for (let ingredient of ingredientsArray) {
    if (dish._id.equals(ingredient._dishID)) {
      dish['ingredients'].unshift(ingredient)
    }
  }
  console.log(dish['ingredients'])             <------------- 
  console.log(dish)                            <-------------         
}

dishArray是从mongoose查询返回的dish个对象数组。

1 个答案:

答案 0 :(得分:0)

如果不进一步了解您的代码,普通javascript ==将完成这项工作

var dishArray = [{
  _id: '0'
}, {
  _id: '1'
}];
var ingredientsArray = [{
  _id: '0',
  _dishID: '0'
}, {
  _id: '1',
  _dishID: '1'
}];

for (let dish of dishArray) {
  dish['ingredients'] = [];

  for (let ingredient of ingredientsArray) {
    if (dish._id == ingredient._dishID) {
      dish['ingredients'].unshift(ingredient);
    }
  }

  console.log(dish['ingredients']);
  console.log(dish);
}