我在嵌套 json 结构中有一个如下所示的动态 json
{
"data": [
{
"_score": 0.5753642,
"_type": "data",
"_id": "686",
"_source": {
"mainData": "subset",
"data": "vehicle",
"name": "subset_vehicle",
"fields": [
"number",
"id",
"chasis"
],
"dataset": "chasis"
},
"_index": "vehicle"
},
{
"_score": 0.575,
"_type": "data",
"_id": "687",
"_source": {
"mainData": "subset1",
"data": "vehicle1",
"name": "subset_vehicle1",
"fields": [
"number",
"id",
"chasis"
],
"dataset": "chasis1"
},
"_index": "vehicle"
},
{
"_score": 0.57,
"_type": "data",
"_id": "686",
"_source": {
"mainData": "subset",
"data": "vehicle",
"name": "subset_vehicle",
"fields": [
"number",
"id",
"chasis"
],
"dataset": "chasis"
},
"_index": "vehicle"
}
]
}
我想将其转换为扁平 json 类型
{
"_id": "686",
"mainData": "subset",
"data": "vehicle",
"dataset": "chasis"
"name": "subset_vehicle",
"fields": [
"number",
"id",
"chasis"
]
}
因此,当我根据该 id 单击前端侧的 id 时,特定对象必须像上面那样进行转换,我的意思是平面 json 。我习惯用下面的逻辑来转换
var flatArray = [];
var flatObject = {};
for (var index = 0; index < data.length; index++) {
for (var prop in data[index]) {
var value = data[index][prop];
if (Array.isArray(value)) {
for (var i = 0; i < value.length; i++) {
for (var inProp in value[i]) {
flatObject[inProp] = value[i][inProp];
}
}
}else{
flatObject[prop] = value;
}
}
flatArray.push(flatObject);
}
console.log(flatArray);
但我无法转换它
最佳答案
您可以简单地使用 Array.flatMap()
或 Array.map()
方法返回一个新数组。根据您的要求,两者都可以工作。 Array.flatMap() & Array.map()
var data = [{"_score":0.5753642,"_type":"data","_id":"686","_source":{"mainData":"subset","data":"vehicle","name":"subset_vehicle","fields":["number","id","chasis"],"dataset":"chasis"},"_index":"vehicle"},{"_score":0.575,"_type":"data","_id":"687","_source":{"mainData":"subset1","data":"vehicle1","name":"subset_vehicle1","fields":["number","id","chasis"],"dataset":"chasis1"},"_index":"vehicle"},{"_score":0.57,"_type":"data","_id":"686","_source":{"mainData":"subset","data":"vehicle","name":"subset_vehicle","fields":["number","id","chasis"],"dataset":"chasis"},"_index":"vehicle"}]
var a = data.flatMap(d => {
d._source._id = d._id;
return d._source;
})
console.log(a)
关于javascript - 无法使用 javascript 将嵌套 json 转换为平面 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57050443/