jquery版本的array.contains

jQuery可以testing一个数组是否存在一个对象(作为核心function的一部分或通过一个可用的插件)?

此外,我正在寻找像array.remove ,这将从数组中删除给定的对象。 jQuery能为我处理这个吗?

jQuery.inArray返回与您search的项目相匹配的第一个索引,如果找不到则返回-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; }); 

如果你的列表包含元素列表,那么你可以使用jQuery.not或jQuery.filter来做你的“array.remove”。 (由于您的原始问题的高分数,因此增加了答案)。

我find了删除对象的方法:

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

这不是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]