Javascript 在js中为array添加remove函数的各种方法的优缺点是什么

Javascript 在js中为array添加remove函数的各种方法的优缺点是什么,javascript,arrays,Javascript,Arrays,我需要能够为数组添加删除函数。我认为有多种方法可以做到这一点: 使用原型。它允许我编写类似于arr.remove(item)的代码,但我希望避免使用原型 将整个数组包装到将包含remove函数的函数中。缺点是: 一切的附加功能 我需要编写如下内容:remove(arr,item)很好,但不如arr.remove(项目)好 对数组使用[下划线][1]或及其方法。这是个不错的选择,但有2个缺点。我觉得下划线和lodash很受欢迎,它的额外好处是人们能够理解你的意图 你可能会建议用其他的方法 我

我需要能够为数组添加删除函数。我认为有多种方法可以做到这一点:

  • 使用原型。它允许我编写类似于
    arr.remove(item)
    的代码,但我希望避免使用原型
  • 将整个数组包装到将包含remove函数的函数中。缺点是:
    • 一切的附加功能
    • 我需要编写如下内容:
      remove(arr,item)很好,但不如
      arr.remove(项目)好
  • 对数组使用[下划线][1]或及其方法。这是个不错的选择,但有2个缺点。我觉得下划线和lodash很受欢迎,它的额外好处是人们能够理解你的意图
  • 你可能会建议用其他的方法

    • 我还要注意一件事:knockoutjsobservearray有remove方法。这是有道理的,因为可观察数组无论如何都在包装js数组。所以增加了一些额外的方法

    • Angularjs没有这种数组方法。所有关于数组项移除的问题都建议使用下划线,而不使用下划线。在我看来,由于angular中的数组没有被包装,而纯js数组没有增加开销。如果您需要删除元素,您应该使用一些util函数,比如u.without或您自己的函数


  • 那么最后,每种方法的优缺点是什么呢?[1] :

    您可以尝试复制jQuery模式(
    $()
    ):
    $(arr)。删除(项)
    。Lodash实际上已经提供了此功能:


    一个有趣的链接:。

    我认为还有另一种方法,创建数组的子类,但是“继承”对于Javascript来说从来都不容易。这可能会有帮助

    您可以使用来实现元素“删除”

    比如说

    array.splice(i, 1)
    
    将移除位置i处的元件

    你能把你迄今为止尝试过的东西贴出来吗?这在问题描述中,是我迄今为止尝试过的所有东西。我可以提供更多的细节,但我尝试的内容不清楚,请告诉我。@YaroslavYakovlev出于好奇-为什么要避免使用原型?@aga,因为它将向所有阵列添加删除函数。我可能只在项目的某一部分需要它。此外,这被认为是一种不好的做法,因为它将是全球性的。就我个人而言,我把它列为选项之一,所以这不是我不能做的事情,以防我觉得这是正确的事情。这个答案主要是基于意见的,这不是StackOverflow的正确形式。这意味着将我的数组包装成函数。还有它的额外开销。@YaroslavYakovlev我只是在
    remove(arr,item)
    arr.remove(item)
    :)之间寻找一些东西。是的,这些也是我的想法:-)。我只是想弄清楚我是否还遗漏了其他的优点/缺点。并且知道如何在这种情况下做出决定。我知道没有最好的方法可以做到这一点,这要视情况而定:-)@YaroslavYakovlev“缺点”部分很有趣:。你能把这些链接放到你的答案中吗?我想我会投赞成票:-)请重读这个问题。我知道选择。这是关于什么是优点和缺点。在标题中没有明确说明,现在它就在那里。现在读这篇文章。非常感谢!