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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:14:57