2017-02-20 88 views
0

試圖變異for循環中的對象。對象不可變異

我期待console.log(dish)記錄dish對象與ingredients屬性包含一個未移動的ingredient s數組。

當我登錄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是從貓鼬查詢返回dish對象的數組。

+0

什麼的'dishArray',和你有什麼期望輸出的價值?它看起來像是在'dish ['ingredients']'上做了console.log,但是把'dish'推到'newDishArray',這是爲了什麼呢? –

+0

@DanielT。有任何想法嗎 ? – softcode

+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); 
 
}

+0

原來這是返回的貓鼬對象,不友好的突變 – softcode

+0

然後,也許你可以試着依靠提供的答案在這裏lean()或toObject()你的Mongoose對象:http://stackoverflow.com/questions/7503450/how-do-you-turn-a-mongoose-document-into-a-plain-object – rdlopes

+0

Yep'lean()'解決了它。要儘快寫下來。 – softcode

相關問題