【问题标题】:Why .splice() method deletes elements of different indexes?为什么 .splice() 方法会删除不同索引的元素?
【发布时间】:2021-06-18 12:05:06
【问题描述】:

这是我关于 stackoverflow 的第一个问题,我是新手 :) 学习 JS。我有个问题。我写了这个函数:

function inverseSlice(items, a, b) {
  return items.splice(a, b);
}
inverseSlice([1, 2, 3, 4, 5, 6], 2, 4)
(4) [3, 4, 5, 6]

为什么这个函数返回最后 4 位数字,而根据 MDN 上的文档(我已经阅读了 10 次:P) splice() 方法应该在这里只删除 2 个中间数字(3、4)?它应该返回 [1, 2, 5, 6]。我对吗?谢谢你的帮助:)

【问题讨论】:

  • 你检查过splice() 做了什么,更具体地说它返回了什么
  • 你得到了数组的删除项。请参阅docs
  • 哇,谢谢大家的超级快速回答:) 抱歉我的疏忽,呵呵...

标签: javascript function methods splice


【解决方案1】:

splice

  • 改变原始数组:删除 N 项,其中 N 是第三个参数,从起始索引(第一个参数)开始到指定的数字(所以这里,它将从数组中删除索引 2 到 5;索引 2 , 3, 4, 5,一共删除了 4 个)
  • 返回删除的元素 - 所以,这里是[3, 4, 5, 6]

原始数组现在是 [1, 2],但您记录的是 .splice 返回的内容,而不是原始数组。

如果您想要[1, 2, 5, 6],您需要为第三个参数指定 2(要删除 2 个项目),然后记录原始数组:

function inverseSlice(items, a, b) {
  return items.splice(a, b);
}
const arr = [1, 2, 3, 4, 5, 6];
const removedItems = inverseSlice(arr, 2, 2);

console.log(arr);
console.log(removedItems);

【讨论】:

    【解决方案2】:

    它完全按照它所宣传的那样做,它“返回一个包含已删除元素的数组。”

    function inverseSlice(items, a, b) {
      return items.splice(a, b);
    }
    
    let array = [1, 2, 3, 4, 5, 6, 7, 8];
    
    // Deletes 4 entries starting at index 2,
    // or in other words [3,4,5,6] are snipped
    inverseSlice(array, 2, 4);
    
    console.log(array);

    除非你保留对你传入的数组的引用,否则你永远不会观察到它是如何结束的,你只会得到被删除的元素。

    【讨论】:

      【解决方案3】:

      您对 splice 的参数感到困惑,您传递给 splice 的两个参数不是开始和结束索引,而是 开始索引和要成为的项目数已删除

      因此在您的示例中,它从 2 到 5 索引中删除了项目并返回结果数组,即 [3, 4, 5, 6]

      根据docs

      语法:

      let arrDeletedItems = arr.splice(start[, deleteCount[, item1[, item2[, ...]]]])
      

      参数

      • 开始:开始更改数组的索引。
      • deleteCount:n 整数,表示数组中要从开始删除的元素数。
      • item1, item2, ... :要添加到数组的元素,从 start 开始。如果不指定任何元素, splice() 只会删除 数组中的元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-14
        • 2022-08-03
        • 2013-08-20
        • 2021-04-19
        • 1970-01-01
        • 2021-03-02
        • 1970-01-01
        • 2021-09-23
        相关资源
        最近更新 更多