You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript/ECMAScript中遍历JSON对象并匹配输出

问题描述

我有如下JSON响应数据,难以遍历该JSON结构。需求是当与另一个JSON对象Data匹配时,打印方括号内的数字,例如本次应输出6099。

Response和Data

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

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

我尝试使用forEach方法,但因Response不是数组或集合而报错**"Response.employee.forEach is not a function"**,不清楚如何遍历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


解决方案

基础错误纠正

  • Response和Data本身已是JavaScript对象,无需用JSON.parse()解析(该方法仅用于处理JSON格式字符串),否则会触发错误。
  • Response.Employee是键值对对象,并非数组,因此不能调用数组专属的forEach方法。

高效实现方式(推荐)

若仅需匹配Data中的empName并获取对应值,直接通过属性访问即可,无需遍历:

// 获取目标员工姓名
const targetEmpName = Data[0].empName;
// 直接通过属性名提取对应ID
const targetId = Response.Employee[targetEmpName][0];
console.log(targetId); // 输出:6099

遍历对象的通用方式

若需遍历所有员工信息进行匹配,可使用Object.entries()将对象转换为键值对数组,再用forEach遍历:

// 转换对象为键值对数组并遍历
Object.entries(Response.Employee).forEach(([empName, idArray]) => {
    if (empName === Data[0].empName) {
        console.log(idArray[0]); // 输出:6099
    }
});

内容的提问来源于stack exchange,提问作者Mayo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:22:21