无论如何使用$ .inArray(或替代)与javascript对象数组?

时间:2013-11-23 20:22:42

标签: javascript jquery arrays collections

我在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;

如果答案是否定的,是否有一个替代函数会给我这种高效的行为?

2 个答案:

答案 0 :(得分:2)

或者,您可以使用jQuery方法之一grepeach

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

Live demo

如果您需要支持讨厌的IE< 9:MDN Array.prototype.some shim,或者您也可以使用完整的ES5 shim(感谢@ user2864740)。 Underscore还提供_.some实用程序。