我有一个带有以下JSON签名的API:
[{
"id": 3,
"impact": 7,
"probability": 0.7,
"title": "Risk 3"
}]
现在,我可以说这种格式的3个类似对象,它们实际上演示了公司的不同风险名称或编号。现在,我需要找出影响或可能性最高的风险数字。还有哪个风险具有最高的RPZ,
RPZ = impact * probability
我设法找到json中任何属性的最高值。但是我尝试了很多方法来找出与之相关的标题或风险名称。这是我无法实现的目标。例如,我的目标是获取最高价值,可以说上面示例的影响为7,并在此处打印出其风险名称(即标题)。我能够获得最高值,但无法打印出其相应的风险名称或标题。
小片段...
var con = JSON.parse(body);
var highImpact = Math.max.apply(Math, con.map(i => i.impact));
现在从上述highImpact为7,现在我需要提取对应的风险名称,即……风险3。这就是我在努力的地方。
我已经检查了该社区中其他开发人员提出的许多类似问题,以及互联网上的一些网页和博客。但是直到现在,我还没有找到解决方案。
如果你们中有人能帮助我,我将非常感激
v
ar Request = require('request');
Request.get("https://webdevbootcamp-jay-jayantamgr.c9users.io/api/risks", (error, response, body) => {
if(error)
{
return console.dir(error);
}
var con = JSON.parse(body);
var highImpact = Math.max.apply(Math, con.map(i => i.impact));
var highProb = Math.max.apply(Math, con.map(p => p.propability));
let dictRPZ = [];
function addRPZ(RiskName, RPZ){
dictRPZ.push({RiskName, RPZ});
}
con.forEach(function(item){
var RPZ = item.impact * item.propability;
addRPZ(item.title, RPZ);
});
});
预期的结果是制作一个仪表板,并显示影响力最大,最高RPZ的风险,实时风险表和移动平均线图
最佳答案
您可以通过降序排序并选择已排序数组的第一个元素来做到这一点。
let arr = [
{ "id": 3, "impact": 7, "probability": 0.7, "title": "Risk 3" },
{ "id": 4, "impact": 8, "probability": 0.8, "title": "Risk 4" }
]
let highestImpact = arr.sort((a,b)=>b.impact-a.impact)[0].title;
console.log(highestImpact)
对于最高的
RPZ
,您可以这样操作let arr = [
{ "id": 3, "impact": 7, "probability": 0.7, "title": "Risk 3" },
{ "id": 4, "impact": 8, "probability": 0.8, "title": "Risk 4" },
{ "id": 5, "impact": 10, "probability": 0.8, "title": "Risk 5" }
]
let highestRpz = arr.map(e=> {
e.rpz= e.impact * e.probability
return e;
}).sort((a,b)=>b.rpz-a.rpz)[0].title
console.log(highestRpz)