2016-03-05 107 views
2

使用信息从JSON形式的API返回,我试图操纵以下数据:如何使用角度访问嵌套JSON数组数据,通过数组参数进行过滤?

"results": [ 
    { 
     "url": "etcetc", 
     "id": 1, 
     "user": { 
      "url": "etcetc", 
      "id": 2, 
      "email": "[email protected]", 
      "username": "example", 
      "first_name": "mister", 
      "last_name": "sample" 
     }, 
     "data1": "String", 
     "data2": 10, 
     "data3": 6, 
     "data4": 12000, 
     "data5": 0.3333333333333333 
    } 

所以有几个对象在“结果”返回,每个对象都有自己的一套数据1的-5。使用Angular,搜索具有最高data5的对象的最佳方式是什么,并返回该特定对象的其余信息?所以我会打印data1-5数组对象的最高data5值,如果这是有道理的。

回答

4

假设你有一个对象,而不是JSON,或解析JSON成一个对象,你可以使用Array.reduce

var max = obj.results.reduce(function(a,b) { 
    return a.data5 > b.data5 ? a : b; 
}); 

FIDDLE


ES2015版本

var max = obj.results.reduce((a, b) => a.data5 > b.data5 ? a : b); 
0

一个简单的for-each循环是所有你需要:

highest = results[0] // seed highest with the first element 

results.forEach(function(el) { 
    if (el['data5'] > highest['data5']) 
    highest = el 
})