JavaScript中如何获取对象的键与值?数组对象遍历报错解决
解决数组内对象的键值对遍历问题
嘿,我一眼就发现问题啦!你定义的obj其实是一个数组(外面包了方括号[]),里面只装了一个对象。你现在的循环是直接遍历数组的索引,所以才会输出0 is [object Object]这种奇怪的内容——因为数组的第一个索引是0,对应的元素就是那个对象呀。
修正方案:先取数组里的对象,再遍历键值对
我们只需要先把数组里的目标对象取出来,再用你熟悉的for...in循环(或者更现代的方法)遍历它的键值对就行:
方法1:修正后的for...in版本
var obj = [{"PRODUCT_ID":"P01","M01":1,"M02":2, "M03": null}]; // 取出数组中的第一个(也是唯一一个)对象 var product = obj[0]; for (var key in product) { if (product.hasOwnProperty(key)) { console.log(`${key} is ${product[key]}`); } }
执行后控制台会输出:
PRODUCT_ID is P01 M01 is 1 M02 is 2 M03 is null
方法2:更简洁的现代写法(推荐)
用Object.entries()可以直接获取对象的键值对数组,再用forEach遍历,代码更清爽:
var obj = [{"PRODUCT_ID":"P01","M01":1,"M02":2, "M03": null}]; // 先判断数组不为空,再遍历对象的键值对 obj[0] && Object.entries(obj[0]).forEach(([key, value]) => { console.log(`${key} is ${value}`); });
转成格式化JSON展示结果
如果想要用美观的JSON格式输出结果,直接用JSON.stringify()加上缩进参数就行:
var obj = [{"PRODUCT_ID":"P01","M01":1,"M02":2, "M03": null}]; console.log(JSON.stringify(obj[0], null, 2));
输出的格式化JSON如下:
{ "PRODUCT_ID": "P01", "M01": 1, "M02": 2, "M03": null }
核心就是先区分开数组和对象:你要遍历的是数组内部的对象,而不是数组本身~
内容的提问来源于stack exchange,提问作者Brian Crist
相关产品推荐
相关产品推荐

