【问题标题】:javascript push returning number instead of object [duplicate]javascript推送返回数字而不是对象[重复]
【发布时间】:2017-10-01 19:48:53
【问题描述】:

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

谢谢!!!

【问题讨论】:

  • 返回值是新的长度,这是意料之中的。原始数组已发生变异,因此您无需返回它
  • 我确实认为@kind 用户的回答更清楚地解决了这个问题,这个问题的标题和方法可能会让遇到相同问题的其他人更容易找到和理解,但我当然可以标记这个如果你这么认为,作为副本。类似的主题,但在我看来不同的解释(希望对其他犯下愚蠢错误的人有所帮助)
  • 投反对票有什么原因吗?

标签: javascript


【解决方案1】:

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

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

reminders.push(newReminder);

【讨论】:

  • 即使使用上述解决方案,它也会返回数组的长度,而不是最终的数组
  • @vikramvi 然后在推送新元素后,返回整个数组 - return reminders;
猜你喜欢
  • 2021-04-28
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
相关资源
最近更新 更多