我试图查找一个对象是否包含某个值,然后让它决定下一步的操作。这是从 Google Maps API 返回的对象。这是从他们的 API 返回的确切示例。
数组
[{'long_name': 'United States', 'short_name': 'US'}, {'long_name': 'California', 'short_name': 'CA'}];
有条件/检查
if( $.inArray('US', array) == -1 ){
alert('Your country is not supported.');
} else {
alert('Your country is supported.');
}
这不起作用,因为它只查看索引,而不查看我认为的值。如果数组中存在该值,查找并返回最干净、最快的方法是什么?
最佳答案
要查找匹配项,您可以使用 jQuery.grep()
:
var res = $.grep(arr, function(item) {
return item.short_name == 'US';
});
它返回一个数组,如果没有找到匹配项,该数组将为空。
或者,您可以使用 Array.prototype.filter()
:
var res = arr.filter(function(item) {
return item.short_name == 'US';
});
奖金
您可以进一步概括它:
function searchFunction(field)
{
return function(arr, term) {
return arr.filter(function(item) {
return item[field] == term;
};
};
}
var searchByShortName = searchFunction('short_name');
if (searchByShortName(arr, 'US').length) {
// ..
}
关于javascript - 在数组中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29688189/