在JSON数组中查找field.value

时间:2013-10-21 14:55:59

标签: javascript json

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 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;
});

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

<强> Fiddle

如果您只关心单个匹配并返回匹配的对象,只需使用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
    }
}

答案 2 :(得分:1)

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

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

JsFiddle

答案 3 :(得分:1)

您可以使用本机js,也可以使用underscoreJS lib。 UnderscoreJS