我有一组对象说items
。我想找到name
xyz的项目。
目前,我写了一个for循环
for(var i = 0; i < items.length; i++)
{
if( items[i].name == "xyz" )
{
found = true;
break;
}
}
是否可以使用jquery将此循环缩短为一行语句?像这样的东西:
$.find(items, "name", "xyz");
答案 0 :(得分:1)
您可以使用
var matchingItems = items.filter(function(v){return v.name=="xyz"});
或使用jQuery(为了更好的兼容性,就像许多数组函数一样,IE8上没有filter或some):
var matchingItems = $.grep(items, function(v){return v.name=="xyz"});
答案 1 :(得分:1)
类似的东西:
$.grep(yourArray, function(n) {
return n.name == "xyz";
});
答案 2 :(得分:0)
items.some(function(el) { return el.name == "xyz"; })
使用jQuery,您需要执行$.grep
之类的操作,然后检查长度($.grep(items, function(el){ return el.name=="xyz"; }).length > 1
) - 这不是最佳解决方案。如果您想为那些不支持some
(并且不想使用the polyfill)的浏览器使用库解决方案,请使用Underscore的any
。
答案 3 :(得分:0)
(function( $ ) {
$.find = function( array, property, key ) {
var found = false;
for(var i = 0; i < array.length; i++)
{
if( array[i][property] == key )
{
found = true;
break;
}
}
return found ? i : -1;
};
})( jQuery );
用法:$.find(items, "name", "xyz");
答案 4 :(得分:0)
答案 5 :(得分:0)
var arr = ["abc", "xyz" ];
if($.inArray("abc",arr) > 0){
return true;
}
else
return false
这将返回“搜索字符串”的索引
如果没有找到,它将返回-1。