javascript - JSON - 操作元素

标签 javascript jquery 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
 }
]

使用 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_parsedjson 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/

相关文章:

mysql - Erlang json验证问题

c# - 如何将列表转换为json

javascript - 替换文本区域中特定位置的字符

jquery - 带有动态添加行的 jquery tablesorter 的问题

javascript - 如何在 Codeigniter 中使用 JSON 制作动态图表 js?

javascript - 从下拉列表中选择不同类型的值打开不同类型的输入法?

javascript - jQuery 表单提交

javascript - 如何只获取字符串的特定部分?

javascript - Firebase 更新值的速度没有我想要的 Javascript 快

javascript - 使用 .html() 时,jQuery 会从字符串中去除一些 html 元素吗?