如何将记录解析为json数据

时间:2019-01-14 18:18:39

标签: javascript jquery json

我有一个json数据:

var data_work_in = [     
{"A":999,"B":144,"D":"A","E":""},
{"A":999,"B":36,"D":"B","E":""},
{"A":999,"B":36,"D":"W","E":""}
];

我想使用foreach循环在这种情况下填充“ E”记录

if (data_work_in.D === data_work_in[data_work_in.D]
&&
data_work_in[data_work_in.D] === "999")

E = 1

else

E = 0

当我尝试通过其他键的内容查看键的内容时,如下所示:

    json.forEach(e=>{
      console.log(e.[e.A]);

    });

我有此错误:

未捕获的SyntaxError:意外令牌[

请帮助

3 个答案:

答案 0 :(得分:2)

这里有些错误。首先是您的console.log语句包含语法错误-您所看到的错误:

console.log(e.[e.A]); // syntax error

应该是

console.log(e[e.A]); // cleaned

第二,我不完全确定您要通过以下操作来完成什么:

data_work_in.D === data_work_in[data_work_in.D]

此测试将始终失败,因为数组D中没有成员data_work_in

答案 1 :(得分:1)

我想你是这个意思

var data_work_in = [     
{"A":999,"B":144,"D":"A","E":""},
{"A":999,"B":36,"D":"B","E":""},
{"A":999,"B":36,"D":"W","E":""}
];

for(let i = 0; i < data_work_in.length; i++){ 
    for(key in data_work_in[i]){
        if(key === "D"){
            if(data_work_in[i][data_work_in[i][key]] === 999)
              data_work_in[i].E = 1;
            else
              data_work_in[i].E = 0;
        }    
    }
}

console.log(data_work_in)
// result 
// 0: {A: 999, B: 144, D: "A", E: 1}
// 1: {A: 999, B: 36, D: "B", E: 0}
// 2: {A: 999, B: 36, D: "W", E: 0}

答案 2 :(得分:0)

您可以检查该值(严格比较,您需要使用相同的类型和一个数字),并为布尔检查分配一个数值。

var data_work_in = [{ A: 999, B: 144, D: "A", E: ""  }, { A: 999, B: 36, D: "B", E: ""  }, { A: 999, B: 36, D: "W", E: "" }];

data_work_in.forEach(o => o.E = +(o[o.D] === 999));

console.log(data_work_in);
.as-console-wrapper { max-height: 100% !important; top: 0; }