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。
答案 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)
答案 3 :(得分:1)
您可以使用本机js,也可以使用underscoreJS lib。 UnderscoreJS