Dea*_*ool 2 html javascript arrays ecmascript-6
我在数组中获得了一组对象(带有国家和州键以及值)的数据。
现在,我需要以这样的方式格式化数据,我得到一个新数组(以 countryName 作为键,状态列表 - 在数组中作为值)。
我正在尝试这样做,但没有成功。有人可以帮我吗?
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);Run Code Online (Sandbox Code Playgroud)
那是因为带点的对象键不是有效的语法。您可以通过用 包裹密钥来解决此问题[]。此外,.map()method 创建一个新数组,其中填充了对调用数组中的每个元素调用提供的函数的结果。因此,您应该在.forEach()这里使用方法,例如:
data.forEach(item => newData.push({[item.country]: item.states}));
Run Code Online (Sandbox Code Playgroud)
data.forEach(item => newData.push({[item.country]: item.states}));
Run Code Online (Sandbox Code Playgroud)
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"]}];
var newData = [];
data.forEach(item => newData.push({[item.country]: item.states}));
console.log(newData);Run Code Online (Sandbox Code Playgroud)
或者,您可以使用.map()方法并简单地在.map()回调中返回对象并将其存储在newData:
newData = data.map(item => ({[item.country]: item.states}));
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)
newData = data.map(item => ({[item.country]: item.states}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6109 次 |
| 最近记录: |