我有以下JSON对象,想要获取日期的值。 0.0为“关”状态,2.0为“开”状态。 对于我的项目要求,我想取出如下:
日期=“2017-12-01” 有效= 73% 关= 26%
如何为给定的JSON对象实现该场景?
{
"2017-12-02": {
"0.0": 1.0
},
"2017-12-01": {
"2.0": 0.7379912663755459,
"0.0": 0.26200873362445415
}
}
答案 0 :(得分:3)
尝试使用它:
var obj = {
"2017-12-02":{
"0.0":1.0
},
"2017-12-01":{
"2.0":0.7379912663755459,
"0.0":0.26200873362445415
}
}
var objectKeys = Object.keys (obj);
for (var i = 0; i < objectKeys.length; i ++) {
var act = obj [objectKeys [i]]["2.0"];
var off = obj [objectKeys [i]]["0.0"];
console.log ("Date=" + objectKeys [i] + " Active=" + ((act ? act : 0) * 100).toFixed (0) + "% Off=" + ((off ? off : 0) * 100).toFixed (0) + "%");
}
答案 1 :(得分:2)
您可以使用array#map
生成输出,使用Object.keys()
来迭代键。
var obj = {"2017-12-02":{"0.0":1.0},"2017-12-01":{"2.0":0.7379912663755459,"0.0":0.26200873362445415}},
result = Object.keys(obj).map(k => `Date = ${k} Active = ${Math.trunc((obj[k]["2.0"] || 0)*100)}% Off = ${Math.trunc((obj[k]["0.0"] || 0)*100)}%`);
console.log(result);
&#13;
答案 2 :(得分:0)
您可以使用JSON.parse
将字符串解析为JSON对象(如果需要),然后像任何其他对象一样使用它,例如使用for..in循环来迭代日期:
var jso = json.Parse(str)
for (let dat in jso) {
var out = "Date = \"" + dat + "\" ";
jso[dat]["0.0"] &&
(out += ("Active = " + parseInt(jso[dat]["0.0"] * 100) + "% "));
jso[dat]["2.0"] &&
(out += ("Off = " + parseInt(jso[dat]["2.0"] * 100) + "% "));
console.log(out);
}