javascript - 遍历对象数组中的每个元素
问题描述
我有一个包含如下数据的对象,
obj = {
Q1:['val1','val2'],
Q2:['val3','val4','val5'],
Q3:['val8']
}
我试图遍历键并获取每个键中的第一个元素连接每个数组中的每个元素,并使用它们将它们连接在一起,
(我的对象有比这个 ofc 更多的键)
所以输出应该像
- val1,val3,val8
- val2,val4,
- ,val5,
我试图遍历键并获取每个值,但我认为我在循环中遗漏了一些东西,因为如果在每个对象中找到元素,我就无法更改键
这些是我下面的试验。
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])
}
}
解决方案
映射数组并连接字符串。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(','))
)
推荐阅读
- mysql - MySQL 服务器未启动
- amazon-dynamodb - GET for AWS API Gateway 以公开 AWS DynamoDB 数据库后端适用于测试但不适用于浏览器
- sql-server - 调整没有临时表的结果集
- ldap - 使用 LDAP 服务包装 RDBMS
- java - 适配器中的 Android RecyclerView 显示问题
- amazon-web-services - AWS 上的 Kubernetes 使用 Kops - kubectl 的 kube-apiserver 身份验证
- go - 如何从接口中提取具体结构
- datetime - SSRS Dateformat 最大日期问题
- apache-camel - 骆驼文件语言 SortBy 日期模式系统时间或文件名模式?
- css - flex-direction 中的神秘行为:column