如何使用按数组参数过滤的角度访问嵌套的 JSON 数组数据

How to access nested JSON array data with angular, filtered by array parameter?

本文关键字:数组 访问 嵌套 JSON 数据 何使用 参数 过滤      更新时间:2023-09-26

使用从API返回的JSON形式的信息,我正在尝试操作以下数据:

"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
    }

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

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

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

小提琴


ES2015 版本

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

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

highest = results[0]  // seed highest with the first element
results.forEach(function(el) {
  if (el['data5'] > highest['data5'])
    highest = el
})