给定以下 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/