【问题标题】:How does delete operator in javascript works?javascript中的删除运算符如何工作?
【发布时间】:2021-01-14 21:39:53
【问题描述】:

问题是我想知道,delete 运算符如何从数组中删除一个值。 它会循环整个数组吗? 注意时间复杂度的从数组中删除和项的最佳方法是什么。

感谢您的回答。

【问题讨论】:

  • Here 看看delete 做了什么。
  • @Countour-Integral 我知道它的作用,但我想知道它是如何做到的。
  • with code,什么意思,具体的可以看firefox源码或者chromium。
  • 通过从数组中删除一个项目来定义你的意思。有多种方法,有些方法在时间复杂度方面比其他方法更有效,但可能无法达到您的要求。
  • 接受的答案正是我所需要的。我只想创建一个从哈希图中删除项目的方法。

标签: javascript arrays hashmap delete-operator


【解决方案1】:

delete 运算符只是删除数组元素中的所有属性。因为查找元素需要O(1),而删除属性需要O(1),所以整个事情需要O(1)。请注意,删除不会更改数组的length 属性,也不会更改数组中其他元素的索引。所以行为如下:

const arr = [0,1,2,3,4,5]
delete arr[2]
console.log(arr[2]) // undefined

所以delete 可能是考虑时间复杂度的最佳方法,因为使用splice 或类似函数的方法采用O(n)。然而,它们更安全。

【讨论】:

  • 谢谢,这就是我需要的答案。我会将它用于hashmap,所以它不会打扰我,它将是未定义的,实际上这是我需要的。感谢您的宝贵时间!
【解决方案2】:

要从数组中删除一个元素,我看到splice 最常使用delete_count 作为 1 传递(这意味着删除单个元素)。

let arr = [1, 2, 3];
arr.splice(0, 1); // delete `1` element starting at index `0`
// the above expression returns a new array containing the removed items
console.log(arr); // prints: [2, 3], since splice changes the array in place.

【讨论】:

    猜你喜欢
    • 2016-05-25
    • 2022-12-15
    • 2017-06-08
    • 2014-08-25
    • 2011-10-08
    • 2023-01-14
    相关资源
    最近更新 更多