我在javascript中有以下数组:
var myFirstArray = [1,2,3];
我使用$ .inArrray()来查看该数组中是否有特定的数字
var num =3;
var exists = $.inArray(num, myFirstArray) > -1;
我现在有一个对象数组
var myArray = [{value:1, label:"bird"}, {value:2, label:"dog"}, {value:3, label: "cat"}];
是否仍然使用$ .inArray()在对象的字段内进行搜索?像这样:
var num = 3;
var exists = $.inArray(num, myFirstArray, (r) {return r.value}) > -1;
如果答案是否定的,是否有一个替代函数会给我这种高效的行为?
答案 0 :(得分:2)
var num = 3;
var myArray = [{value: 1, label: "bird"}, {value:2, label:"dog"}, {value:3, label: "cat"}];
var result = jQuery.grep(myArray, function( element, index ) {
return ( num === element.value );
});
var found = false;
$.each(myArray, function ( index, element ) {
if ( num === element.value ) {
found = true;
return false;
}
});
答案 1 :(得分:1)
您可以使用原生Array#some方法:
var num =3;
var myArray = [{value:1, label:"bird"}, {value:2, label:"dog"}, {value:3, label: "cat"}];
var exists = myArray.some(function(o) {
return o.value === num;
});
如果您需要支持讨厌的IE< 9:MDN Array.prototype.some shim,或者您也可以使用完整的ES5 shim(感谢@ user2864740)。 Underscore还提供_.some
实用程序。