Я запутался в объединении двух разных типов json файла. Потому что я хочу создать json файл, который использует те же свойства для подключения каждого json файла. Все это основано на структуре d3.js.
Первый json файл показан следующим образом:
[{"status":"Active",
"name":"public",
"router:external":true,
"original_status":"ACTIVE",
"id":"dfc69b95-915f-475c-8800-db6c4e15c290"},
{"status":"Active",
"name":"UTAH",
"router:external":false,
"original_status":"ACTIVE",
"id":"1b12abc7-6f69-493d-b95a-8fd9f8d15643"},
{"status":"Active",
"name":"USCB",
"router:external":false,
"original_status":"ACTIVE",
"id":"5280be34-8e77-457c-856d-cd9776841cda"},
{"status":"Active",
"name":"UCLA",
"router:external":false,
"original_status":"ACTIVE",
"id":"82d4cc54-471b-456e-8c28-da04226ee344"},
{"status":"Active",
"name":"SRI",
"router:external":false,
"original_status":"ACTIVE",
"id":"e802c8fe-b30e-40c8-8f1d-fb8631bb0601"}
]
Второй файл json показан следующим образом:
{
"SRI": [-122.18219, 37.45383],
"USCB": [-119.69819, 34.42083],
"UCLA": [-118.24368, 34.05223],
"UTAH": [-111.89105, 40.76078]
}
Как вы можете видеть, одно и то же свойство - это имя, поэтому я хочу использовать это имя для построения соединения и комбинировать json файл, который имеет свойства координат. Именно так:
[{"status":"Active",
"name":"public",
"lot": null,
"lat": null,
"router:external":true,
"original_status":"ACTIVE",
"id":"dfc69b95-915f-475c-8800-db6c4e15c290"},
{"status":"Active",
"name":"UTAH",
"lot":"-111",
"lat":"40",
"router:external":false,
"original_status":"ACTIVE",
"id":"1b12abc7-6f69-493d-b95a-8fd9f8d15643"},
....
Не могли бы вы рассказать мне, как достичь этого? Спасибо за все ваши мысли.
Этот вопрос не имеет ничего общего с D3, вы можете сделать это с помощью обычного JavaScript.
Предположим, что первый JSON называется json1
а второй - json2
, вы можете сделать:
json1.forEach(function(d){
d.lat = json2[d.name] ? json2[d.name][1] : null;
d.lon = json2[d.name] ? json2[d.name][0] : null
});
Это создаст новые свойства в объектах json1
, основанных на json2
.
Вот демо:
var json1 = [{
"status": "Active",
"name": "public",
"router:external": true,
"original_status": "ACTIVE",
"id": "dfc69b95-915f-475c-8800-db6c4e15c290"
}, {
"status": "Active",
"name": "UTAH",
"router:external": false,
"original_status": "ACTIVE",
"id": "1b12abc7-6f69-493d-b95a-8fd9f8d15643"
}, {
"status": "Active",
"name": "USCB",
"router:external": false,
"original_status": "ACTIVE",
"id": "5280be34-8e77-457c-856d-cd9776841cda"
}, {
"status": "Active",
"name": "UCLA",
"router:external": false,
"original_status": "ACTIVE",
"id": "82d4cc54-471b-456e-8c28-da04226ee344"
}, {
"status": "Active",
"name": "SRI",
"router:external": false,
"original_status": "ACTIVE",
"id": "e802c8fe-b30e-40c8-8f1d-fb8631bb0601"
}];
var json2 = {
"SRI": [-122.18219, 37.45383],
"USCB": [-119.69819, 34.42083],
"UCLA": [-118.24368, 34.05223],
"UTAH": [-111.89105, 40.76078]
};
json1.forEach(function(d) {
d.lat = json2[d.name] ? json2[d.name][1] : null;
d.lon = json2[d.name] ? json2[d.name][0] : null
});
console.log(json1);
var first = [{"status":"Active",
"name":"public",
"router:external":true,
"original_status":"ACTIVE",
"id":"dfc69b95-915f-475c-8800-db6c4e15c290"},
{"status":"Active",
"name":"UTAH",
"router:external":false,
"original_status":"ACTIVE",
"id":"1b12abc7-6f69-493d-b95a-8fd9f8d15643"},
{"status":"Active",
"name":"USCB",
"router:external":false,
"original_status":"ACTIVE",
"id":"5280be34-8e77-457c-856d-cd9776841cda"},
{"status":"Active",
"name":"UCLA",
"router:external":false,
"original_status":"ACTIVE",
"id":"82d4cc54-471b-456e-8c28-da04226ee344"},
{"status":"Active",
"name":"SRI",
"router:external":false,
"original_status":"ACTIVE",
"id":"e802c8fe-b30e-40c8-8f1d-fb8631bb0601"}
]
var second = {
"SRI": [-122.18219, 37.45383],
"USCB": [-119.69819, 34.42083],
"UCLA": [-118.24368, 34.05223],
"UTAH": [-111.89105, 40.76078]
}
var res = first.map(d => {
if(second[d.name]) {
let arr = second[d.name];
d.lat = arr[0];
d.lom = arr[1];
}
else {
d.lat = null;
d.lon = null;
}
return d;
});
console.log(res);
Рабочая скрипка: https://jsfiddle.net/GunnerSS/dvu0L463/