AngularJS中遍历JSON对象数组,如何正确获取键对应的值?
解决JSON数组单个键值对的取值问题
我完全懂你的困扰!你手头的这个JSON数组,每个元素都是只包含单个键值对的对象,现在你能拿到路径形式的键,但一直没法正确获取对应的产品名称值,之前用response.data[key][0]的写法确实不对,我来给你捋清楚问题出在哪,再给你几个好用的解决办法。
问题根源
你拿到的response.data是一个数组,数组里的每一项都是一个独立的对象(比如第一个是{ "/folder1/folder2/folder3/product-1": "Product Apple" }),不是数组!所以你用[0]去访问这个对象肯定行不通——对象是用键名来取值的,不是数字索引。
解决方案
这里有两种简单直接的方式,按需选就行:
方法1:用Object.entries()解构键值对
这个方法能直接把单个键值对的对象转换成数组,再解构出键和值:
// 假设response.data就是你的JSON数组 response.data.forEach(item => { // Object.entries(item)会把对象转成[[键, 值]]的格式,取[0]拿到唯一的键值对数组 const [productPath, productName] = Object.entries(item)[0]; // 现在你就可以随意使用这两个值了 console.log('产品路径:', productPath); console.log('产品名称:', productName); });
方法2:先拿键再取值
如果你习惯先获取键,再通过键去访问值,也可以这么写:
for (const item of response.data) { // 拿到当前对象的唯一键 const productPath = Object.keys(item)[0]; // 通过键获取对应的值 const productName = item[productPath]; console.log(productPath, productName); }
单独获取第一个元素的值示例
如果你只想拿到第一个元素的Product Apple,可以这么写:
const firstProductObj = response.data[0]; const firstProductKey = Object.keys(firstProductObj)[0]; const firstProductValue = firstProductObj[firstProductKey]; console.log(firstProductValue); // 输出 "Product Apple"
这样应该就能解决你的问题啦!
内容的提问来源于stack exchange,提问作者shabarinath
相关产品推荐
相关产品推荐

