gpt4 book ai didi

javascript - array.splice 出现意外结果

转载 作者:行者123 更新时间:2023-12-02 17:13:57 25 4
gpt4 key购买 nike

我创建了一个 JavaScript 函数来删除数组中的项目并返回最终的项目。然而,这实际上是从主数组中删除了不应该的项目。

功能:

function oneRemaining(arr) {
tmp = arr;
while (tmp.length > 1) {
tmp.splice(~~(Math.random() * tmp.length), 1);
}
return tmp[0];
}

因此,运行此命令后,进入的数组应该仍然相同,因为它从未改变,但是当我在控制台中运行此命令时,其中只有 1 项。

为什么输入数组会改变?

最佳答案

您的数组发生更改,因为:

  1. 您创建了一个引用,而不是克隆/副本(您最终接触的是同一个数组)
  2. Splice 会更改底层数组,它是执行此操作的少数方法之一 ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice )

如果您希望它起作用,请将第二行替换为:

tmp = arr.concat([])

希望这有帮助。

关于javascript - array.splice 出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24596606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com