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

JavaScript中遍历对象数组:如何循环获取所有地址?

嘿,我来帮你把这个问题拆解清楚,一步步搞懂执行流程,再解决获取所有address的问题~

先搞懂你现有代码的执行流程

首先,Object.entries(name)这个方法的作用是把对象的键值对转换成二维数组。针对你定义的name对象:

const name = { 
  john: [ { age: 21, address: 'LA', } ], 
  sam: [ { age: 26, address: 'California' } ] 
};

Object.entries(name)会返回这样的数组:

[
  ["john", [{ age: 21, address: 'LA' }]],
  ["sam", [{ age: 26, address: 'California' }]]
]

你的for循环是遍历这个二维数组的每一项:

  • 当i=0时,array[i]就是["john", [{ age: 21, address: 'LA' }]],所以console.log会输出这个数组
  • 当i=1时,array[i]就是["sam", [{ age: 26, address: 'California' }]],输出这个数组

这就是你现有代码的执行逻辑,它只是把每个键和对应的数组打印出来,还没深入到数组里的对象去取address。

如何循环获取所有address值

因为每个键对应的是一个数组(哪怕里面只有一个对象),所以需要嵌套遍历:先遍历外层的键值对数组,再遍历每个键对应的对象数组,最后取出address属性。

方法1:用你熟悉的for循环改造

const name = { 
  john: [ { age: 21, address: 'LA', } ], 
  sam: [ { age: 26, address: 'California' } ] 
};
const array = Object.entries(name); 

for (let i = 0; i < array.length; i++) {
  // 取出当前键对应的对象数组(比如array[i][1]就是john对应的[{age:21, address:'LA'}])
  const personList = array[i][1];
  // 遍历这个数组里的每个对象
  for (let j = 0; j < personList.length; j++) {
    // 取出address并打印
    console.log(personList[j].address);
  }
}

执行后会依次输出LA和California。

方法2:更简洁的forEach嵌套写法

如果觉得嵌套for循环有点繁琐,可以用forEach来简化:

const name = { 
  john: [ { age: 21, address: 'LA', } ], 
  sam: [ { age: 26, address: 'California' } ] 
};

// 遍历每个键值对,用解构直接拿到key和对应的对象数组
Object.entries(name).forEach(([key, personList]) => {
  // 遍历对象数组里的每个person
  personList.forEach(person => {
    console.log(person.address);
  });
});

方法3:收集所有address到一个数组里

如果想把所有address存到一个新数组里,而不是直接打印,可以用Object.values+flatMap:

const name = { 
  john: [ { age: 21, address: 'LA', } ], 
  sam: [ { age: 26, address: 'California' } ] 
};

// Object.values(name)直接获取所有对象数组,flatMap扁平化并取出address
const allAddresses = Object.values(name).flatMap(personList => 
  personList.map(person => person.address)
);

console.log(allAddresses); // 输出 ["LA", "California"]

这样不管你的对象里有多少个键,每个键对应的数组里有多少个对象,都能轻松拿到所有address啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:57:28