所以我的 JSON 看起来像 -
[
{
"Metric": "7e70661f-e266-4745-9b1b-c5c5691e9746",
"Pivot1": 40.00000,
"Pivot2": 38.00000,
"Pivot3": 18.00000,
"Total": 96.00000,
"Average": 32.00000,
"IsTotal": 0,
"MetricOrder": 1
}
]
使用 javascript 和/或 jQuery 我想最终得到 -
[
{
"Metric":"7e70661f-e266-4745-9b1b-c5c5691e9746",
"Pivot1":40.00000,
"Pivot1DFA": 125.000%,
"Pivot2":38.00000,
"Pivot2DFA": 118.750%,
"Pivot3":18.00000,
"Pivot3DFA": 56.250%,
"Total":96.00000,
"Average":32.00000,
"IsTotal":0,
"MetricOrder":1
}
]
(DFA 代表与平均值的差异)。
在此示例中,我有 3 个数据透视列。我可以而且可能会有更多,但直到我从服务器取回 JSON 后我才知道。
我该如何实现这个目标?
最佳答案
纯 JavaScript 解决方案
对于 json 中以“Pivot”开头的所有键,在结果 json 中添加一个具有所需操作的键
json = {"Metric": "7e70661f-e266-4745-9b1b-c5c5691e9746",
"Pivot1": 40.00000,
"Pivot2": 38.00000,
"Pivot3": 18.00000,
"Total": 96.00000,
"Average": 32.00000,
"IsTotal": 0,
"MetricOrder": 1
}
json_parsed = {}
Object.keys(json).forEach(
function(e){
json_parsed[e] = json[e]
if(e.indexOf("Pivot") === 0){
var avg = json["Average"]
json_parsed[e+"DFA"] = ((json[e] / avg ) * 100.0) +"%"
}
}
)
使用此解决方案 json_parsed
与 json
var 具有相同的顺序,您可以控制键顺序
>>>> Object.keys(json_parsed)
>>>> ["Metric", "Pivot1", "Pivot1DFA", "Pivot2", "Pivot2DFA", "Pivot3", "Pivot3DFA", "Total", "Average", "IsTotal", "MetricOrder"]
关于javascript - JSON - 操作元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25507938/