【发布时间】:2021-01-26 01:51:45
【问题描述】:
我收到来自 API 调用的 json 响应。我需要存储它的键,并创建一个对象数组。我打算不管响应的键是什么,都动态创建这个对象数组。
我已经拿到了这样的钥匙:
const json_getAllKeys = data => {
const keys = data.reduce((keys, obj) => (
keys.concat(Object.keys(obj).filter(key => (
keys.indexOf(key) === -1))
)
), [])
return keys
}
返回一个数组(使用示例 json):
['name','username', 'email']
但我正在尝试使用该数组来创建一个看起来像这样的对象数组
[
{
name: "name",
username: "username",
email: "Email",
}
];
我一直在尝试映射数组,但由于循环而得到多个对象,我需要一个对象才能使其工作。
keys.map(i=>({i:i}))
[
{ i: 'id' },
{ i: 'name' },
{ i: 'username' },
{ i: 'email' }
]
任何提示都会很有用!
提前致谢:D
【问题讨论】:
-
是的,没有办法吗?
-
有很多,但我不明白你的原始数据如何
-
原始数据来自 json。从那里我得到了一个包含该响应键的数组!
-
你的意思是
data = ['name','username', 'email']?或keys = ['name','username', 'email'](返回,在这种情况下数据的值是多少)?这还不清楚 -
data.reduce((keys, obj)上的代码错误,Array.reduce() 以另一种方式工作,它使用累加器
标签: javascript arrays json object reduce