JavaScript中push返回数字而不是对象

27

我确信这只是一个简单的、愚蠢的错误,而我漏掉了什么,请问有人能告诉我为什么返回的是3而不是[{"method": 'popup', "minutes": ''},{"method": 'email', "minutes": '10'}, {"method": 'popup', "minutes": '20'}]吗?

我已经做了一个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

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
我认为@kind user的回答更清晰,可以解决这个问题,而且这个问题的标题和方法可能会让其他遇到同样问题的人更容易找到和理解,但如果您认为需要的话,我当然可以将其标记为重复。在我看来,这是一个类似的主题,但解释不同(希望对那些未来犯同样愚蠢错误的人有所帮助)。 - Rbar
1个回答

38
< p > Array#push 方法会在原数组上进行操作,不需要将其赋值给一个新变量。它不会返回一个新的数组,但会修改原始数组并返回其length属性。这就是为什么你得到了3作为结果。

要获取期望的结果,只需调用它,而无需将其分配给任何变量:

reminders.push(newReminder);

2
即使使用上述解决方案,它返回的是数组的长度而不是最终数组。 - vikramvi
3
在推入新元素后,返回整个数组 - return reminders; - kind user
var newReminder = { "method": 'popup', "minutes": '20' }; var reminders = [{ "method": 'popup', "minutes": '' }, { "method": 'email', "minutes": '10' }]; reminders.push(newReminder); document.getElementById("demo").innerHTML = reminders; }``` - ÄR Âmmãř Żąîñh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接