【问题标题】:is the anyway to use $.inArray (or alternative) with a javascript array of objects?无论如何将 $.inArray (或替代)与javascript对象数组一起使用?
【发布时间】:2013-12-08 15:56:24
【问题描述】:

我在 javascript 中有以下数组:

var myFirstArray = [1,2,3];

我使用 $.inArarray() 来查看特定数字是否在该数组中,像这样

 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;

如果答案是否定的,是否有替代功能可以让我获得这种高效的行为?

【问题讨论】:

  • 没有。请参阅文档:inArray 不允许使用谓词函数。

标签: javascript jquery arrays collections


【解决方案1】:

您也可以使用其中一种 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;
   }
});

【讨论】:

    【解决方案2】:

    可以使用原生的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

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

    【讨论】:

    • @user2864740 谢谢,添加了答案的链接。 =]
    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2020-09-24
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2016-04-11
    相关资源
    最近更新 更多