Javascript 将具有数组作为属性的对象转换为对象数组
我该如何转身Javascript 将具有数组作为属性的对象转换为对象数组,javascript,arrays,Javascript,Arrays,我该如何转身 {"service":[["A"],["B"]],"cost":[[20],[50]]} 进入 我甚至不知道从哪里开始诚实地…你可以变换你的对象以获得你想要的结果,首先,使用.map()将你的对象变换为以下形式: 接下来,将这两个内部数组压缩在一起(第一个数组的第一个元素与第二个数组的第一个元素进行分组,第一个数组的第二个元素与第二个数组的第二个元素进行分组),分组方法如下: const obj={“服务”:[[“A”],[“B”]],“成本”:[[20],[50]}; con
{"service":[["A"],["B"]],"cost":[[20],[50]]}
进入
我甚至不知道从哪里开始诚实地…你可以变换你的对象以获得你想要的结果,首先,使用
.map()
将你的对象变换为以下形式:
接下来,将这两个内部数组压缩在一起(第一个数组的第一个元素与第二个数组的第一个元素进行分组,第一个数组的第二个元素与第二个数组的第二个元素进行分组),分组方法如下:
const obj={“服务”:[[“A”],[“B”]],“成本”:[[20],[50]};
const[first,…r]=Object.entries(obj.map([k,vals])=>vals.map([v])=>({[k]:v}));
const zip=first.map((o,i)=>Object.assign(o,…r.map(arr=>arr[i]));
console.log(压缩)
array reduce是一个起点-尽管,数据以[[“A”],[“B”]
格式似乎很奇怪,可能只是[“A”,“B”]
,除非存在[[“A”,“C”],[“B”]
的可能性,谢谢@JaromandaX,我会看看我能用reduce做些什么,然后从那里开始!是的,这种结构的原因是React Hooks中的useState如何构建服务。再次感谢你的帮助!可以使用for/in循环,也可以使用map/reduce。重点是,基本上有两个问题。1.迭代服务值以创建对象2。迭代成本值并分配给相应的对象。是否假设服务值的计数与成本值的计数相同?嘿@HariLubovac,是的,这就是useState钩子构建它的方式(或者至少是我管理它的方式)。永远都会有一个服务,一个成本,同时我会仔细研究这个尼克,谢谢!我需要努力理解数据结构。更多的练习是应该的。再次感谢你@真的,不用担心。如果不习惯,语法可能会有点令人生畏。以下是一些可能会有所帮助的链接和链接。如果您对语法有任何其他问题,请告诉我这很有趣,因为我使用React定期处理扩展和分解,但我显然对它们没有深入的理解。我将寻找一些资源,在那里我可以练习更复杂的问题:)看看你是如何回答这个问题的,我相信以我目前的知识,我不可能做到这一点。或者至少,没有那么优雅或迅速。这告诉我我需要努力解决问题。。。
[{service:"A", cost:20},{service:"B", cost:50}]
[
[
{
"service": "A"
},
{
"service": "B"
}
],
[
{
"cost": 20
},
{
"cost": 50
}
]
]