javascript - 遍历 JSON 的每个键
问题描述
数据
{
"_id": "3fad6024-3226-451b-9e81-1c544aaaebf7",
"name": "ank retailer part 2",
"aboutUs": "part 2 updated",
"retailerLanguage": [
{
"languageID": "20b4772c-2470-4eaa-bc0c-61429700781cd",
"language": {
"name": "Koreandddd",
"__typename": "language"
}
},
{
"languageID": "8f04da56-0f53-4694-b6dc-0eb5a3aa2990",
"language": {
"name": "Mandarin",
"__typename": "language"
}
}
],
"termsAndConditions": "agreed"
}
我试过这个:
const tifOptionsES6 = Object.keys(d).map(key => {
return Edited "{key}" to {d[key]}
})
但无法迭代数组键
预期产出
Edited "name" to ank retailer part 2
Edited "aboutUs" to part 2 updated
Edited "retailerLanguage" to Koreandddd , Mandarin
Edited "termsAndConditions" to part 2 agreed
并检查不为空
解决方案
对于嵌套对象数组,您需要创建一个带有访问嵌套数据的函数的查找图。
const data = {
"_id": "3fad6024-3226-451b-9e81-1c544aaaebf7",
"name": "ank retailer part 2",
"aboutUs": "part 2 updated",
"retailerLanguage": [{
"languageID": "20b4772c-2470-4eaa-bc0c-61429700781cd",
"language": {
"name": "Koreandddd",
"__typename": "language"
}
}, {
"languageID": "8f04da56-0f53-4694-b6dc-0eb5a3aa2990",
"language": {
"name": "Mandarin",
"__typename": "language"
}
}],
"termsAndConditions": "agreed"
}
const keyValueMap = {
retailerLanguage: ({ language: { name } }) => name
};
const tifOptionsES6 = data =>
Object.entries(data)
.filter(([key]) => !key.startsWith('_'))
.map(([key, value]) =>
`Edited "${key}" to ${Array.isArray(value)
? value.map(e => keyValueMap[key]?.(e) ?? e).join(', ')
: keyValueMap[key]?.(value) ?? value
}`).join('\n');
console.log(tifOptionsES6(data));
.as-console-wrapper { top: 0; max-height: 100% !important; }
推荐阅读
- python - 太阳能水泵的时间序列预测/优化问题
- email - 在 Yahoo 邮件中允许不太安全的应用程序访问
- wordpress - Openseadragon, DeepZoom, WordPress
- c++ - C++ 中数据初始化的不同方式
- flutter - 使用命名路由导航时找不到流提供程序
- google-chrome - chrome 83 自升级后开始崩溃
- image - 如何检查飞镖三元运算符中的空小部件值以在为空时显示默认图像?
- html - 使用jQuery删除html表中的空列
- java - Java流分组按键作为最高薪员工,将值作为部门的所有员工
- python - 将浮点数转换为分数