javascript推送返回数字而不是对象

IT技术 javascript
2021-02-05 03:11:55

我确定这只是我遗漏的一些简单的愚蠢错误,但谁能告诉我为什么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

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个回答

Array#push方法就地工作,您不必将其分配给新变量。它不会返回一个新数组,但会修改原始数组并返回它的length. 这就是为什么你得到3的结果。

要获得所需的结果,只需调用它,而不分配给任何变量:

reminders.push(newReminder);
即使使用上述解决方案,它也会返回数组的长度而不是最终数组
2021-03-23 03:11:55
@vikramvi 然后在推送新元素后,返回整个数组 - return reminders;
2021-04-08 03:11:55