gpt4 book ai didi

javascript - Array.splice() 在数组文字上以一种方式运行,在保存为 const 的数组上以另一种方式运行

转载 作者:行者123 更新时间:2023-11-28 14:10:07 25 4
gpt4 key购买 nike

所以这会很短。

我有以下代码:

const foo = [1,2,3,4].splice(2, 1);
console.log("foo", foo);
// [3]

const bar = [1,2,3,4]
bar.splice(2, 1);
console.log("bar", bar);
// [1, 2, 4]

正如你所看到的,如果你运行它(至少在 Chrome 中),foo 控制台会指向一个具有单个值 3 的数组,其中 bar 控制台会指向一个包含所有项目的三项数组但是 3

造成这种差异的原因是什么?

最佳答案

splice 会做两件事:

  • 它将在给定参数的情况下从数组中删除(或添加)项目(第一个参数是索引,第二个参数是要删除的项目数)
  • 它将以数组形式返回删除的项目

返回更改后的(或原始)数组。所以

const foo = [1,2,3,4].splice(2, 1);
console.log("foo", foo);

表现符合预期;它会删除索引 2 处的项目(即 3)并将其作为数组返回,因此 foo 的计算结果为 [3] (一个数组包含单个删除的项目)。

const bar = [1,2,3,4]
bar.splice(2, 1);
console.log("bar", bar);

索引 2 处的项目将从 bar 数组中删除,但随后您继续使用 3 记录更改后的 bar 数组> 项目已删除,因此结果为 [1, 2, 4]

如果您将 splice 调用的结果分配给某个对象,然后记录该其他变量,可能会更清楚:

const arr = [1,2,3,4]
const removedItems = arr.splice(2, 1);
console.log("arr", arr);
console.log("removedItems", removedItems);

关于javascript - Array.splice() 在数组文字上以一种方式运行,在保存为 const 的数组上以另一种方式运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59889808/

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