首页 > 解决方案 > 遍历对象数组中的每个元素

问题描述

我有一个包含如下数据的对象,

obj = {
Q1:['val1','val2'],
Q2:['val3','val4','val5'],
Q3:['val8']
}

我试图遍历键并获取每个键中的第一个元素连接每个数组中的每个元素,并使用它们将它们连接在一起,(我的对象有比这个 ofc 更多的键)

所以输出应该像

我试图遍历键并获取每个值,但我认为我在循环中遗漏了一些东西,因为如果在每个对象中找到元素,我就无法更改键

这些是我下面的试验。

for (var key in obj) {
  if (obj.hasOwnProperty(key)) {
    for (let i = 0; i < obj[key].length; i++) {
          console.log(obj[key][i])//This is always looping on the same key but different element          
    }
  }
}

虽然我希望它接近

 for (var key in obj) {
  if (obj.hasOwnProperty(key)) {
          console.log(obj[key][i])         
  }
}

标签: javascriptnode.jsobjectconcatenation

解决方案


映射数组并连接字符串。Math.max 以获取完整长度以进行迭代。使用 flatMap 过滤掉长度不等的数组值。

obj = {
Q1:['val1','val2'],
Q2:['val3','val4','val5'],
Q3:['val8']
}

const o = Object.values(obj)
const len = Math.max(...o.map(({length})=>length))
console.log(
Array(len).fill().map((x,i)=>o.flatMap(q=>q[i]||[]).join(','))
)


推荐阅读