我在数组中获取对象集的地方获取数据(带有国家和州键沿着值)。
现在,我需要以这样一种方式格式化数据,即得到一个新数组(以countryName作为键,以state-in array作为值)。
我正试着做那件事,但没有成功。有人能帮我吗?
var data = [
{
"country": "United States",
"states": [
"Alabama",
"Alaska",
"Arizona",
]
},
{
"country": "Canada",
"states": [
"Ontario",
"Saskatchewan",
"Alberta",
]
},
{
"country": "Australia",
"states": [
"Australian Capital Territory",
"Jervis Bay Territory",
"New South Wales",
"Queensland",
]
}
];
newData = [];
data.map(item => newData.push({item.country: item.states});
console.log(newData);
6条答案
按热度按时间q3qa4bjr1#
这是因为带点的对象键不是有效语法。您可以通过用
[]
Package 键来解决此问题。此外,.map()
方法创建一个新数组,其中填充了对调用数组中的每个元素调用所提供函数的结果。因此,您应该在此处使用.forEach()
方法,如下所示:x一个一个一个一个x一个一个二个x
或者,您可以使用
.map()
方法,在.map()
回调中简单地返回对象,并将其存储在newData
中,如下所示:6yt4nkrj2#
正确使用
map
是在map方法中返回值,这在你的代码中是缺失的。除此之外,使用反结构来进一步简化。wgx48brx3#
你可以试试这个:
它很符合你的要求。
这里我们使用
new
关键字来声明我们的Object,并将对象推入Array中。另外,由于country
是一个变量,因此我们使用[]
表示法而不是dot
表示法。zwghvu4y4#
像这样试试。
chy5wohz5#
**如果您使用map,请返回,但我认为您在这种情况下使用forEach
tjvv9vkg6#
请使用for循环,对于异步等待条件,Map不能正常工作。