2017-05-03 45 views
3

我敢肯定,這只是我錯過的一些簡單的愚蠢錯誤,但誰能告訴我爲什麼3被返回而不是[{ "method": 'popup', "minutes": ''}, {"method": 'email', "minutes": '10'}, {"method": 'popup', "minutes": '20'}];javascript push返回數字而不是對象

我做了的jsfiddle所以你可以看到,以及:https://jsfiddle.net/qk10arb0/3/

HTML

<p>Click the button to add a new element to the array.</p> 

<button onclick="addNewReminder()">Try it</button> 

<p id="demo"></p> 

的Javascript

function addNewReminder(){ 
     var newReminder = { 
     "method": 'popup', 
     "minutes": '20' 
     }; 

     var reminders = [{ 
       "method": 'popup', 
       "minutes": '' 
       }, { 
        "method": 'email', 
        "minutes": '10' 
       }]; 

    reminders = reminders.push(newReminder); 
    document.getElementById("demo").innerHTML = reminders; 
} 

謝謝!

+1

返回值是新的長度,這是預期。原始數組發生了變異,因此您不需要返回它 – aw04

+1

[Javascript語法:var array = \ [\] .push(foo);](http://stackoverflow.com/questions/25634173/javascript -syntax-var-array-pushfoo) – Thriggle

+0

我的確認爲@kind用戶的反應更加明確,以便解決這個問題,這個問題的標題和方法可能會使其他人遇到相同問題時更容易找到並理解,但我當然可以如果你這麼認爲,將其標記爲重複。類似的話題,但在我眼中不同的解釋(希望對其他人也有幫助,使得愚蠢的錯誤也向前推進) – Rbar

回答

5

Array#push方法在原位工作,您不必將其分配給新變量。它不會返回一個新的數組,但會修改原來的數組,並將返回它的length。這就是爲什麼你得到3的結果。

要獲得期望的結果,只是把它,不分配給任何一個變量:

reminders.push(newReminder); 
+1

* facepalms *當然。真的很傻。謝謝@kind用戶 – Rbar

相關問題