如何在javascript或Ecmascript中迭代Json对象?[复制]

How to iterate over Json object in javascript or Ecmascript? [duplicate]

提问人:Mayo 提问时间:5/4/2023 最后编辑:Mayo 更新时间:5/4/2023 访问量:259

问:

我有这个 json 响应,并且很难迭代这个 json 结构。这个想法是打印方括号内写的数字,如果它们与另一个 json 对象“Data”Json 匹配。就像在这种情况下,6099应该打印。

响应和数据

var Response = {
  "Employee" : {
    "John" : [ "6131" ],
    "Alex" : [ "402537" ],
    "Mary" : [ "6039" ],
    "Java" : [ "6039" ],
    "Anna" : [ "6099" ]
}
}

var Data = [
  {
    "empName": "Anna"
}
]

我尝试使用 forEach,但由于 Response 不是数组或集合,所以它不起作用并给出错误“Response.employee.forEach 不是函数”,并且无法理解如何迭代 json 对象。

var Data1 = JSON.parse(Data) 
var res= JSON.parse(Response)

res.Employee.forEach(function(res1) {
    var test = res1
        if(Data1.empName== test){
        console.log(test[0])
        }
});

预期输出应为:6099

JavaScript JSON 对象 ecmascript-6

评论

1赞 cmgchess 5/4/2023
res.Employee[Data[0].empName][0]
0赞 Mayo 5/4/2023
@cmgchess 不需要使用循环?
0赞 cmgchess 5/4/2023
无需,因为对象值可以使用与数组不同的键直接访问

答:

-2赞 Klone 5/4/2023 #1

您可以使用 for...例如,在循环中循环访问键,然后,您可以检查当前键是否与 empNamee 匹配。如果是这样,您可以在方括号中打印数字:

var dataName = Data[0].empName;
for (var key in Response.Employee) {
  if (key === dataName) {
    console.log(Response.Employee[key][0]);
  }