0
var x = [{ a: 1, b: 2}, { a: 11, b: 12}, { a: 31, b: 23}, { a: 51, b: 24}]

你怎么找到的a = 11

对于简单的数组,可以这样x.indexOf('1');做也许解决方案应该是

var a1 = x.indexOf({a: 1});

当然,我想获取值匹配的整个 JSON。

4

4 回答 4

5

你可以用一个简单的功能来做到这一点,不需要第三方模块:

var x = [{ a: 1, b: 2}, { a: 11, b: 12}, { a: 31, b: 23}, { a: 51, b: 24}];

function getIndexOf(value){
    for(var i=0; i<x.lengh; i++){
        if(x[i].a == value)
            return i;
    }
}

alert(getIndexOf(value)); // output is: 1
于 2013-10-21T15:04:15.270 回答
2

您可以在旧版浏览器上使用Array.Filter和 shim 支持。

var x = [{
    a: 1,
    b: 2
}, {
    a: 11,
    b: 12
}, {
    a: 31,
    b: 23
}, {
    a: 51,
    b: 24
}],
tocomp = 11;
var res = x.filter(function (ob) { 
    return ob.a === tocomp;
});

结果将是与条件匹配的对象数组。

小提琴

如果你只关心单个匹配并取回匹配的对象,只需使用 for 循环。

var x = [{
    a: 1,
    b: 2
}, {
    a: 11,
    b: 12
}, {
    a: 31,
    b: 23
}, {
    a: 51,
    b: 24
}],
tocomp = 11, i, match;
for (i=0, l=x.length; i<l; i++){
    if(x[i].a === tocomp){
        match = x[i];
        break; //break after finding the match
    }
}
于 2013-10-21T15:02:45.983 回答
1

只需遍历数组即可获取值。

for(var i = 0;i < x.length; i++){
   alert(x[i].a);
}

提琴手

于 2013-10-21T15:00:19.083 回答
1

您可以使用本机 js,也可以使用 underscoreJS 库。 下划线JS

于 2013-10-21T15:00:25.170 回答