2013-11-23 46 views
0

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

如果答案是否,是否有一個替代函數,會給我這種性能的行爲?

+1

否請參閱文檔:['inArray'](http://api.jquery.com/jQuery.inArray/)不允許使用謂詞函數。 – user2864740

回答

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

您可以使用本機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實用程序。

+0

@ user2864740謝謝,添加到答案的鏈接。 '=]' –

相關問題