2017-01-26 124 views
2

所有,我試圖將對象推入一個數組,並console.logging新數組,看看它看起來像,它看起來好像它不能正常工作。你能告訴我我做錯了嗎?將對象推入數組

<% var testObjArray = [] %>  
<% var testObj = {} %> 

<% currentUser.shares.forEach(function(share){ %> 
    <% if(!share || share.length < 1){ %> 
    <!--DO NOTHING--> 
    <% } else { %> 
     <% if(currentUser.id == share.yes_owner.id){ %> 
      <% testObj.price = share.event.yes_purchase_price %> 
      <% testObj.yes_or_no = "YES" %> 

     <% } else { %> 

      <% testObj.price = share.event.no_purchase_price %> 
      <% testObj.yes_or_no = "No" %> 
     <% }%> 
      <% testObj.quantity = 1 %> 
      <% testObj.eventId = share.event.id %> 
      <% testObj.name = share.event.name %> 

     <% testObjArray.push(testObj) %> 
     <% console.log(testObj) %> 
    <% }%> 
<% }) %> 
<% console.log("THIS IS THE NEW OBJARRAY: " + testObjArray) %> 

我想最終的結果是,並期待它是..

[{ price: undefined, 
    yes_or_no: 'No', 
    quantity: 1, 
    eventId: 588a107edf666e0273614cca, 
    name: 'Will this work?' }, 
{...}, 
{...}, 
{ price: undefined, 
    yes_or_no: 'No', 
    quantity: 1, 
    eventId: 588a107edf666e0273614cca, 
    name: 'Will this work?' } 
...] 

然而,事實證明像...

「這是新的OBJARRAY:」 [對象的對象],[對象的對象],[對象的對象],[對象的對象]

+1

你(也)在你的代碼中有一個致命的缺陷,那就是你將在每次迭代中覆蓋testObj,這意味着你的數組最終會以同一個對象(* last * 1)多次結束,而不是每個插槽中都有一個新的對象 - 您需要將'var testObj = {}'**放在forEach循環** –

+1

之內,這是什麼<% %>永遠在線?你不能把<%放在第一行,%>放在最後? –

+0

我想是這樣..我不知道。謝謝! – FDRH

回答

3

更改此

console.log("THIS IS THE NEW OBJARRAY: " + testObjArray) 

console.log("THIS IS THE NEW OBJARRAY: ", testObjArray) 

因爲"string" + Object使得打印成字符串

+0

我知道這是愚蠢的。謝謝! – FDRH

+0

歡迎您:) –

1

您註銷對象引用,註銷對象鍵的字符串對象和值,你可以在對象上調用JSON.stringify()

<% console.log("THIS IS THE NEW OBJARRAY: " + JSON.stringify(testObjArray)) %> 
1

您的console.log()對該對象造成隱式調用toString(),因爲您將它與一個字符串。

您可以通過n個參數來console.log(),所以改變

console.log("THIS IS THE NEW OBJARRAY: " + testObjArray) 

console.log("THIS IS THE NEW OBJARRAY: ", testObjArray); 

會給你你所期望的輸出。