【发布时间】:2010-10-01 19:57:45
【问题描述】:
jQuery 能否测试数组是否存在对象(作为核心功能的一部分或通过可用插件)?
另外,我正在寻找类似array.remove 的东西,它会从数组中删除给定的对象。 jQuery 可以帮我处理这个吗?
【问题讨论】:
标签: javascript jquery
jQuery 能否测试数组是否存在对象(作为核心功能的一部分或通过可用插件)?
另外,我正在寻找类似array.remove 的东西,它会从数组中删除给定的对象。 jQuery 可以帮我处理这个吗?
【问题讨论】:
标签: javascript jquery
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; });
【讨论】:
如果您的列表包含元素列表,那么您可以使用jQuery.not 或jQuery.filter 来执行“array.remove”。 (添加答案是因为您的原始问题在谷歌上的得分很高)。
【讨论】:
我找到了移除对象的方法:
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]
【讨论】: