如何通过对应Name字段从嵌套数组的JSON对象中提取目标值?
解决方案:通过Name字段精准获取对应Value
当然可以实现!硬编码索引确实不靠谱——后端返回的数组元素顺序随时可能变化,用Name字段作为标识来定位才是正确的做法。
你可以用JavaScript的Array.find()方法来遍历UserAttributes数组,找到Name等于custom:var的对象,然后取出它的Value:
const x = { "UserAttributes": [ { "Name" : "sub" , "Value": "54f5cdfb-6ec7-4683-fdasfasdf-2324234234" } , { "Name" : "custom:var" , "Value": "VALUEIWANT" } , { "Name" : "email" , "Value": "test.user@email.com" } ] , "Username": "testuser" }; // 精准定位目标属性对象 const targetAttribute = x.UserAttributes.find(attr => attr.Name === "custom:var"); // 安全获取Value,避免找不到时报错 const desiredValue = targetAttribute ? targetAttribute.Value : "未找到对应值"; console.log(desiredValue); // 输出 VALUEIWANT
如果你用的是ES2020及以上的环境,还可以用可选链操作符让代码更简洁:
const desiredValue = x.UserAttributes.find(attr => attr.Name === "custom:var")?.Value; console.log(desiredValue); // 找到时输出VALUEIWANT,找不到时输出undefined
为什么这方法更可靠?
find()会遍历数组,返回第一个匹配Name === "custom:var"的对象,完全不依赖元素在数组中的位置- 加入了容错处理,避免因后端返回数据变化(比如缺失
custom:var字段)导致代码报错
内容的提问来源于stack exchange,提问作者user68288
相关产品推荐
相关产品推荐

