我有以下格式的对象键值。
{
"Code1": {
"char10": "ch1",
"number1": "1",
"text1": "txt1"
},
"Code2": {
"char2": "ch2",
"num2": "2"
},
"Code3": {
"text": "txt4"
}
}
想要转换为这种格式:
{
"Code1": [
{
"char10": "ch1",
"number1": "1",
"text1": "txt1"
}
],
"Code2": [
{
"char2": "ch2",
"num2": "2"
}
],
"Code3": [
{
"text": "txt4"
}
]
}
设法获得了有点相似的响应,但没有得到我想要的确切输出。
尝试了下面的代码片段但它返回的格式与预期不同。
Object.entries(payload).map((e) => ( { [e[0]]: e[1] } ))
以上片段的响应:
[
{
"Code1": {
"char10": "ch1",
"number1": "1",
"text1": "txt1"
}
},
{
"Code2": {
"char2": "ch2",
"num2": "2"
}
},
{
"Code3": {
"text": "txt4"
}
}
]
您可以获取所有条目并将其与新对象的包装值进行映射。
您可以使用
Object.entries()
withreduce()
将每个条目转换为包含对象的数组来解决此问题。您可以按照以下方式操作:
您需要减少对象的条目,并为每个键值对将键分配给结果对象并为其提供包装在数组内的值。
我在下面编写了一个可重复使用的函数,它采用一个可选项
valueMapper
,可以在分配给结果对象时转换值。当然,也可以用
Array.prototype.map
andObject.fromEntries
来代替Array.prototype.reduce
andObject.assign
。两种解决方案都可以。