【问题标题】:jquery version of array.containsjQuery 版本的 array.contains
【发布时间】:2010-10-01 19:57:45
【问题描述】:

jQuery 能否测试数组是否存在对象(作为核心功能的一部分或通过可用插件)?

另外,我正在寻找类似array.remove 的东西,它会从数组中删除给定的对象。 jQuery 可以帮我处理这个吗?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    jQuery.inArray 返回与您搜索的项目匹配的第一个索引,如果未找到则返回 -1:

    if($.inArray(valueToMatch, theArray) > -1) alert("it's in there");
    

    您不需要 array.remove。使用拼接:

    theArray.splice(startRemovingAtThisIndex, numberOfItemsToRemove);
    

    或者,您可以使用jQuery.grep util 执行“删除”:

    var valueToRemove = 'someval';
    theArray = $.grep(theArray, function(val) { return val != valueToRemove; });
    

    【讨论】:

    • 感谢 Prestaul。问题是,我不知道我需要删除的对象的索引,所以我认为我仍然需要 array.remove。
    • 哦,酷。就在“实用程序”下的文档中。 “RTFM”本来是一个可以接受的答案:) 谢谢你指点我那里。我认为 jquery.grep 可能会给我我需要的删除功能。
    • @morgancodes,确实会!当您发表评论时,我将其添加到我的答案中。
    • 还有:theArray.splice($.inArray(value, theArray), 1);
    • 顺便说一句:“theArray.splice($.inArray(value, theArray), 1);”仅当项目在列表中时才有效。
    【解决方案2】:

    如果您的列表包含元素列表,那么您可以使用jQuery.not 或jQuery.filter 来执行“array.remove”。 (添加答案是因为您的原始问题在谷歌上的得分很高)。

    【讨论】:

    • "(由于您的原始问题的高谷歌分数而添加了答案)" ??!! - “回答是因为我想帮忙而添加的”呢??
    • 我不认为我在回答最初的问题,但这些信息可能对在这里搜索的人有用。
    【解决方案3】:

    我找到了移除对象的方法:

    foot = { bar : 'test'};
    delete foot[bar];
    

    【讨论】:

      【解决方案4】:

      这不是 jQuery,但您可以在一行中向数组添加一个方便的“包含”方法。我发现这有助于提高可读性(尤其是对于 python 人)。

      Array.prototype.contains = function(a){ return this.indexOf(a) != -1 }
      

      示例用法

       > var a = [1,2,3]
       > a.contains(1)
      true
       > a.contains(4)
      false
      

      同样适用于删除

      Array.prototype.remove = function(a){if (this.contains(a)){ this.splice(this.indexOf(a),1)}; return this}
      
      > var a = [1,2,3]
      > a.remove(2)
      [1,3]
      

      或者,如果你希望它返回删除的东西而不是改变的数组,那么

      Array.prototype.remove = function(a){if (this.contains(a)){ return this.splice(this.indexOf(a),1)}}
      
      > var a = [1,2,3]
      > a.remove(2)
      [2]
      > a
      [1,3]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-29
        • 2015-12-25
        • 2011-12-08
        • 1970-01-01
        • 2011-01-05
        • 1970-01-01
        • 2011-08-15
        • 1970-01-01
        相关资源
        最近更新 更多