javascript - 比较来自 JSON 的信息,返回列表中的顶部结果

标签 javascript json

给定以下 JSON:

[
    {
        "group": "satellite-1",
        "data": [
            {
                "label": "feed1-1_TargetA",
                "data": [
                    {"timeRange": ["11:40:00 AM", "11:40:20 AM"], val: "TargetA"},
                    {"timeRange": ["11:40:20 AM", "11:40:40 AM"], val: "TargetA"},
                    {"timeRange": ["11:41:00 AM", "11:41:20 AM"], val: "TargetA"},
                ]
            },
            {
                "label": "feed1-1_TargetB",
                "data": [
                    {"timeRange": ["11:40:40 AM", "11:41:00 AM"], val: "TargetB"},
                    {"timeRange": ["11:41:00 AM", "11:41:20 AM"], val: "TargetB"}
                ]
            },
            {
                "label": "feed1-1_TargetC",
                "data": [
                    {"timeRange": ["11:40:40 AM", "11:41:00 AM"], val: "TargetC"},
                    {"timeRange": ["11:41:00 AM", "11:41:20 AM"], val: "TargetC"},
                ]
            },
            {
                "label": "feed1-1_TargetD",
                "data": [
                    {"timeRange": ["11:40:40 AM", "11:41:00 AM"], val: "TargetD"},
                    {"timeRange": ["11:41:00 AM", "11:41:20 AM"], val: "TargetD"},
                ]
            },
            {
                "label": "feed1-2_TargetB",
                "data": [
                    {"timeRange": ["11:40:20 AM", "11:40:40 AM"], val: "TargetB"}
                ]
            }

        ]
    },
    {
        "group": "satellite-2",
        "data": [
            {
                "label": "feed2-1_TargetA",
                "data": [
                    {"timeRange": ["11:40:20 AM", "11:40:40 AM"], val: "TargetA"},
                    {"timeRange": ["11:41:00 AM", "11:41:20 AM"], val: "TargetA"},
                ]
            },
            {
                "label": "feed2-1_TargetB",
                "data": [
                    {"timeRange": ["11:40:40 AM", "11:41:00 AM"], val: "TargetB"},
                    {"timeRange": ["11:41:00 AM", "11:41:20 AM"], val: "TargetB"}
                ]
            },
            {
                "label": "feed2-1_TargetC",
                "data": [
                    {"timeRange": ["11:40:40 AM", "11:41:00 AM"], val: "TargetC"},
                    {"timeRange": ["11:41:00 AM", "11:41:20 AM"], val: "TargetC"},
                ]
            },
            {
                "label": "feed2-2_TargetB",
                "data": [
                    {"timeRange": ["11:40:20 AM", "11:40:40 AM"], val: "TargetB"}
                ]
            }

        ]
    }
]

我正在尝试比较哪些提要看到了最多的目标。

到目前为止,我已经解决了这个问题,因为我可以遍历 JSON 并通过比较每个提要的长度返回“最细心的提要”。

/*
 * Compare length of each sensor block in data to determine which sensor
 * is most observant
 */
var getMostObservantFeeds = function(entry){
    var bestFeed = null;


    for(var d of entry.data){
        if (bestFeed == null){
            bestFeed = d;
        }
        if (bestFeed.data.length < d.data.length){
            bestFeed = d;
        }
    }

    bestFeed = bestFeed || {};

    return bestFeed.label
    ])
};

var getMostObservantFeed = function(data_JSON){
    return data_JSON.map(x => getMostObservantFeeds(x));
};

但是,如果一个提要的长度与另一个提要的长度相同,我将无法使用此方法。

如果 2 个提要看到相同数量的目标(这是看到的最高数量),我如何返回最佳提要列表? (即卫星 2:feed2-1_TargetA、feed2-1_TargetB、feed2-1_TargetC)

最佳答案

记录最大值并与每次比较如何?也许只是将标签存储在一个数组中,因为这就是您返回的全部内容?

var getMostObservantFeed = function(entry){
    var bestLabels = [];
    var max = 0;

    for(var d of entry.data){
        if (d.data.length >= max){
            max = d.data.length;
            bestLabels.push(d.label);
        }
    }

    return bestLabels;
};

关于javascript - 比较来自 JSON 的信息,返回列表中的顶部结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48995893/

相关文章:

json - 将货币值从 JSON 转换为 NSDecimalNumber

javascript - 使用 Tab 键进行页面导航时滚动到表单元素上的错误消息

javascript - 将 jquery 函数转换为 javascript

jquery - 如何使用 JQuery 将数据放入 Rails

json - 为什么我将 json 解析为 Java 列表,而不是 Scala 列表?

json - 在 swift 中从复杂的 JSON 中获取数据

javascript - 在图像上悬停显示 div 并在鼠标移出时隐藏 div

javascript - 如何启用按钮检查单选按钮

javascript - Meteor JS 中 Atmosphere JS 的模板

javascript - Javascript 中带父级和不带父级的 json 上的 .map 方法