我知道这个标题可能有点让人困惑,所以我会试着用视觉来解释。我已经挣扎了好几天了,我到处都找过了,但这是一个非常具体的任务。
我收到了这个API响应:
{
akash: {
url: "127.0.0.1",
count: 12
},
aptos: {
url: "127.0.0.2",
count: 54
}
}
字符串
我需要将它转换为一个新的对象,格式如下:
{
akash: {
name: "akash",
url: "127.0.0.1",
count: 12
},
aptos: {
name: "aptos",
url: "127.0.0.2",
count: 54
}
}
型
如果你知道的话,现在每个子集都有一个新的属性“name”,它的值是父对象的键名。
另一种方法是将其转换为适当的对象数组,如下所示:
[{
name: "akash",
url: "127.0.0.1",
count: 12
}, {
name: "aptos",
url: "127.0.0.2",
count: 54
}]
型
6条答案
按热度按时间wh6knrhe1#
您可以在对象的关键点之间切换。
如果你有一个originalObject作为起点,你可以使用以下代码创建一个新对象:
字符串
要创建列表,过程非常相似,但您要生成一个新的对象数组并将新值推送到列表中:
型
oogrdqng2#
https://tsplay.dev/WPB8ZN
字符串
这确实是递归的(注意,这会将
name
添加到现有对象,而不是创建新对象)8xiog9wr3#
当使用JSON时,对象可以在使用
JSON.parse()
的reviver参数进行格式化时直接修改。个字符
此reviver将
name
属性分配给任何对象,使其与包含它的键相同。它跳过对数组或其中包含的项目进行此操作,以避免添加名称作为索引:的字符串
如果应该给数组中的对象添加一个名称,那么这个例子展示了如何做到这一点。这里所有对象都将获得保存数组值的键:
67up9zun4#
因为OP想要改变基于对象的数据的数据结构,所以主任务总是必须遍历对象的所有条目,而不管最终的基本数据结构是数组还是对象。
像
Object.entries
这样的方法提供了一个包含所有对象条目的数组。在数组作为目标数据结构的情况下,只需要
map
每个条目,它是一个key
及其相关value
的数组/元组。然后可以通过对象字面量和扩展语法生成条目特定的新对象。如果一个对象作为目标数据结构,我们可以通过将一个空对象(例如一个空的对象字面量)作为初始值传递给
reduce
方法的第二个参数,将entries-array再次reduce
到一个对象中。最终结果然后通过Object.assign
在每次迭代中逐步聚合,其中我们确实将新创建的条目特定对象合并到当前对象中。个字符
reduce
,withObject.assign
this time..的字符串
2hh7jdfx5#
首先回答
字符串
第二个答案
型
u0njafvf6#
我是一个JavaScript的初学者。如果让我来写这些代码,我想我会这样写
字符串