在js中为数组添加删除函数的各种方法的优缺点是什么?

时间:2013-11-18 07:29:54

标签: javascript arrays

我需要能够为数组添加删除功能。我有多种方式可以做到:

  1. 使用原型。它允许我编写像arr.remove(item)这样的代码,但是我希望避免使用原型。
  2. 将整个数组包装到包含删除功能的函数中。缺点是:
    • 对所有事情的附加功能
    • 我需要写出像remove(arr, item);这样的东西,这很好,但不如arr.remove(item);
  3. 使用[下划线] [1]或lodash及其数组方法。一个很好的选择,但有#2的缺点。我觉得,由于人们能够理解你的意图,因此下划线和lodash很受欢迎,这是额外的好处。
  4. 其他一些方法,你可能会建议。

    • 我还想注意一点:knockoutjs observableArray有删除方法。这是有道理的,因为可观察数组无论如何都要包装js数组。因此添加了一些额外的方法

    • Angularjs没有这种数组方法。关于数组项的所有问题删除建议使用下划线无。在我看来,由于角度中的数组没有被包裹,纯js数组没有添加开销。如果你需要删除元素,你应该使用一些util函数,比如_.without或你自己的函数。

  5. 所以最后 - 每种方法的优点和缺点是什么? [1]:http://underscorejs.org/#without

2 个答案:

答案 0 :(得分:0)

您可以尝试重现jQuery模式($()):$(arr).remove(item)。 Lodash实际上已经提供了这个功能:http://lodash.com/docs#_

一个有趣的链接:http://perfectionkills.com/extending-built-in-native-objects-evil-or-not/

答案 1 :(得分:0)

我认为还有另一种方法,创建一个Array的子​​类,但对于Javascript来说,“inherit”绝非易事。这个article可能会有所帮助。

<击> 您可以使用array.splice来实现“删除”元素。

例如

array.splice(i, 1)

将删除位置i处的元素