jquery版本的array.contains

时间:2009-01-16 15:22:05

标签: javascript jquery

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

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

4 个答案:

答案 0 :(得分:91)

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; });

答案 1 :(得分:3)

如果您的列表包含元素列表,则可以使用jQuery.notjQuery.filter来执行“array.remove”。 (由于原始问题的google得分较高,因此添加了答案)。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

这不是jQuery,但在一行中你可以为数组添加一个方便的'contains'方法。我发现这有助于提高可读性(特别是对于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]