从现有 JSON 数组的嵌套 key/values 创建一个新的 JSON 数组
Create a new JSON array from nested key/values of existing JSON array
我有一个对象数组,它的结构总是这样的:
var initialJSON = [
{
"id":"01",
"name":"Jane",
"project":{
"title":"Alpha",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"city":"New York"
},
"dateCreated":"2018-04-28 04:11:16 UTC"
},
{
"id":"02",
"name":"Sarah",
"project":{
"title":"Beta",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"city":"London"
},
"dateCreated":"2018-04-28 04:11:29 UTC"
},
{
"id":"03",
"name":"Mia",
"project":{
"title":"Gamma",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"city":"Paris"
},
"dateCreated":"2018-04-28 04:11:29 UTC"
}
];
我的目标是创建一个新的对象数组,其中仅包含每个项目的 key/values 个项目。基本上从每个项目中删除所有其他数据(包括父键 'project')。
最终结果如下所示:
var formattedJSON = [
{
"title":"Alpha",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"city":"New York"
},
{
"title":"Beta",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"city":"London"
},
{
"title":"Gamma",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"Paris"
}
]
我很难找到循环遍历数据并获得正确结果的方法。我知道已经发布了类似的问题,但似乎没有从内部键的嵌套 key/values 中创建一个新数组。
您可以为此使用 Array#map()
,方法是将数组的每个元素分配给它的 project
属性:
let initialJSON=[{"id":"01","name":"Jane","project":{"title":"Alpha","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"New York"},"dateCreated":"2018-04-28 04:11:16 UTC"},{"id":"02","name":"Sarah","project":{"title":"Beta","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"London"},"dateCreated":"2018-04-28 04:11:29 UTC"},{"id":"03","name":"Mia","project":{"title":"Gamma","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"Paris"},"dateCreated":"2018-04-28 04:11:29 UTC"}];
let result = initialJSON.map(element => element.project);
console.log(result)
您可以在 initialJSON
数组上使用 map
函数来实现此目的,方法如下:
var formattedJSON = initialJSON.map(item => {
// For each item in the "initialJSON", map the fields to each item
// in the "formattedJSON" array
return {
title : item.project.title,
description : item.project.description,
city : item.project.city
}
})
JSON.parse
reviver parameter 可用于更改或排除值:
var j = '[{"id":"01","name":"Jane","project":{"title":"Alpha","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"New York"},"dateCreated":"2018-04-28 04:11:16 UTC"},{"id":"02","name":"Sarah","project":{"title":"Beta","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"London"},"dateCreated":"2018-04-28 04:11:29 UTC"},{"id":"03","name":"Mia","project":{"title":"Gamma","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"Paris"},"dateCreated":"2018-04-28 04:11:29 UTC"}]'
let result = JSON.parse(j, (k, v) => v.project || v);
console.log( result )
我有一个对象数组,它的结构总是这样的:
var initialJSON = [
{
"id":"01",
"name":"Jane",
"project":{
"title":"Alpha",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"city":"New York"
},
"dateCreated":"2018-04-28 04:11:16 UTC"
},
{
"id":"02",
"name":"Sarah",
"project":{
"title":"Beta",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"city":"London"
},
"dateCreated":"2018-04-28 04:11:29 UTC"
},
{
"id":"03",
"name":"Mia",
"project":{
"title":"Gamma",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"city":"Paris"
},
"dateCreated":"2018-04-28 04:11:29 UTC"
}
];
我的目标是创建一个新的对象数组,其中仅包含每个项目的 key/values 个项目。基本上从每个项目中删除所有其他数据(包括父键 'project')。
最终结果如下所示:
var formattedJSON = [
{
"title":"Alpha",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"city":"New York"
},
{
"title":"Beta",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"city":"London"
},
{
"title":"Gamma",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"Paris"
}
]
我很难找到循环遍历数据并获得正确结果的方法。我知道已经发布了类似的问题,但似乎没有从内部键的嵌套 key/values 中创建一个新数组。
您可以为此使用 Array#map()
,方法是将数组的每个元素分配给它的 project
属性:
let initialJSON=[{"id":"01","name":"Jane","project":{"title":"Alpha","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"New York"},"dateCreated":"2018-04-28 04:11:16 UTC"},{"id":"02","name":"Sarah","project":{"title":"Beta","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"London"},"dateCreated":"2018-04-28 04:11:29 UTC"},{"id":"03","name":"Mia","project":{"title":"Gamma","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"Paris"},"dateCreated":"2018-04-28 04:11:29 UTC"}];
let result = initialJSON.map(element => element.project);
console.log(result)
您可以在 initialJSON
数组上使用 map
函数来实现此目的,方法如下:
var formattedJSON = initialJSON.map(item => {
// For each item in the "initialJSON", map the fields to each item
// in the "formattedJSON" array
return {
title : item.project.title,
description : item.project.description,
city : item.project.city
}
})
JSON.parse
reviver parameter 可用于更改或排除值:
var j = '[{"id":"01","name":"Jane","project":{"title":"Alpha","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"New York"},"dateCreated":"2018-04-28 04:11:16 UTC"},{"id":"02","name":"Sarah","project":{"title":"Beta","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"London"},"dateCreated":"2018-04-28 04:11:29 UTC"},{"id":"03","name":"Mia","project":{"title":"Gamma","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","city":"Paris"},"dateCreated":"2018-04-28 04:11:29 UTC"}]'
let result = JSON.parse(j, (k, v) => v.project || v);
console.log( result )