如何使用angular访问嵌套的JSON数组数据,按数组参数过滤?

时间:2016-03-05 05:27:29

标签: javascript arrays angularjs json

使用以JSON形式从API返回的信息,我试图操纵以下数据:

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

因此在"结果"下返回了几个对象,并且每个对象都有自己的数据集1-5。使用Angular,搜索具有最高data5的对象的最佳方法是什么,并返回该特定对象的其余信息?因此,如果有意义,我会打印出具有最高data5值的数组对象的data1-5。

2 个答案:

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

答案 1 :(得分:0)

您只需要一个简单的for-each循环:

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

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