我有一个如下的值数组
[
{
"factor": {
"data": "f1",
"val": [
"val1"
]
}
},
{
"factor": {
"data": "f2",
"val": [
"val2"
]
}
}
]
是否可以将其转换为以下格式
{
"keyvalue": {
"factor": {
"data": "f1",
"val": ["val1"]
},
"factor": {
"data": "f2",
"val": ["val2"]
}
}
}
在给定键必须唯一的情况下,无法对对象进行标准的数组解析
答案 0 :(得分:0)
不可能。对象中的每个键都必须是唯一的。要理解这一点,假设您有一个带有两个相同键的对象:
const obj = {
"key": 1,
"key": 2
}
但是使用obj.key
之类的表达式时应该得到什么? 1
还是2
?废话。
您应该重新考虑您的对象结构,也许您需要一个对象数组?
{
"keyvalue": {
"factor": [
{
"data": "f1",
"val": ["val1"]
},
{
"data": "f2",
"val": ["val2"]
}
]
}
}
答案 1 :(得分:0)
您可以做的就是使用data
字段作为键,因为它始终是唯一的。
类似这样的东西:
{
"factor": {
"f1": ["val1"],
"f2": ["val2"]
}
}
这是将数组转换为键/值对象的方法:
let keyValue = {"factor": {}};
theArray.forEach((item) => {
const key = item.factor.data;
const value = item.factor.val;
keyValue.factor[key] = value;
});
现在keyValue
对象已描述。