rest + spread(응용)3
다음과 같은 데이터가 있다고 해봅시다. 이런것은 나중에 API문서 등등 데이터를 받오는 것이다 라고 생각해주세요.
JSON 데이터 일반적으로 받아오기
// get.json
{
"Americas": {
"korea": [
{
"nation": "Seoul, South Korea",
"name": "Mirae Asset Global Investments",
"address": "13F, Tower1, 33, Jong-ro, Jongno-gu, Seoul, South Korea",
"tel": "1577-1640",
"link": "https://www.am.miraeasset.com/",
"lat": 37.5619416,
"lng": 127.00432739999997
},
{
"nation": "Seoul, South Korea",
"name": "Mirae Asset Daewoo",
"address": "East Tower, Mirae Asset CENTER1 Bldg, 26, Eulji-ro 5-gil, Jung-gu, Seoul, South Korea",
"tel": "1588-6800",
"link": "https://english.miraeassetdaewoo.com/",
"lat": 37.568293,
"lng": 126.98470700000007
},
{
"nation": "Seoul, South Korea",
"name": "Mirae Asset Life Insurance",
"address": "56, Gukjegeumyung-ro, Yeongdeungpo-gu, Seoul, South Korea",
"tel": "1588-0220",
"link": "http://life.miraeasset.com/eng_new/html/index.html",
"lat": 37.5221883,
"lng": 126.92971520000003
}
],
"japan": [
{
"nation": "Tokyo, Japan",
"name": "Global X Japan",
"address": "",
"tel": "",
"link": "https://globalxetfs.co.jp/en/",
"lat": -6.2262724,
"lng": 106.8085939
},
{
"nation": "Tokyo, Japan",
"name": "Global X Japan2",
"address": "",
"tel": "",
"link": "https://globalxetfs.co.jp/en/",
"lat": -6.2262724,
"lng": 106.8085939
}
]
}
}
<script>
$(function(){
$.getJSON("/data/get.json", function (data) { //jqury로 get.json파일에 접근했습니다.
}).done(function(data){ // 서버에 성공적으로 접근하면 다음 코드를 실행해주세요.!
console.log(data);
var {korea: [ ...aniKorea ]} = data.Americas; // {데이터 위치명: [배열의 각 원소들을 가변적으로 받는다.]} = 데이터 있는 위치
var {japan: [ ...aniJapan ]} = data.Americas; // {데이터 위치명: [배열의 각 원소들을 가변적으로 받는다.]} = 데이터 있는 위치
var extractedkorea = {ko: [ ...aniKorea ]} // {원하는 키명 : [복사해온 데이터들]}
var extractedJapan = {jp: [ ...aniJapan ]} // {원하는 키명 : [복사해온 데이터들]}
console.log(extractedkorea);
console.log(extractedJapan);
});
});
</script>
// 결과)
Object
ko: (3) [{…}, {…}, {…}]
__proto__: Object
Object
jp: (2) [{…}, {…}]
__proto__: Object
이제 데이터를 복사해서 가져왔으니, 원하는 데이터만 화면에 출력해봅시다.
JSON 데이터 화면에 출력하기
<script>
$(function(){
$.getJSON("/data/get.json", function (data) {
}).done(function(data){
console.log(data);
// 원본데이터를 복사해오는 코드
var {korea: [ ...aniKorea ]} = data.Americas; // 데이터 위치명: [배열의 각 원소들을 가변적으로 받는다.] = 데이터 있는 위치
var {japan: [ ...aniJapan ]} = data.Americas; // 데이터 위치명: [배열의 각 원소들을 가변적으로 받는다.] = 데이터 있는 위치
var extractedkorea = {ko: [ ...aniKorea ]} // {원하는 키명 : [복사해온 데이터들]}
var extractedJapan = {jp: [ ...aniJapan ]} // {원하는 키명 : [복사해온 데이터들]}
console.log(extractedkorea);
console.log(extractedJapan);
extractedkorea.ko.forEach((element) => { // 데이터 배열을 반복해서 접근하여
$('body').append(element.name + ' / ') // 원하는 데이터만 출력한다.
});
extractedJapan.jp.forEach((element) => { // 데이터 배열을 반복해서 접근하여
$('body').append(element.name + ' / ') // 원하는 데이터만 출력한다.
})
});
});
</script>
결과는 다음과 같습니다.
JSON 데이터 템플릿 만들어서 화면에(원하는 위치에) 출력하기
<div class="main">
<ul class="lists korea">
</ul>
<ul class="lists japan">
</ul>
</div>
<script>
$(function(){
var templateGroble; //템플릿을 공유해서 사용하기 위함!
var templates = function(data) {
if(!data.link){
var template = '';
template += '<li>';
template += '<p>'+data.name+'</p>';
template += '<p>'+data.tel+'</p>';
template += '<span>'+data.nation+'</span>';
template += '</li>';
templateGroble = template;
} else {
var template = '';
template += '<li>';
template += '<p>'+data.name+'</p>';
template += '<p>'+data.tel+'</p>';
template += '<a href="'+data.link+'">'+data.nation+'</a>';
template += '</li>';
templateGroble = template;
}
};
$.getJSON("/data/get.json", function (data) {
}).done(function(data){
console.log(data);
var {korea: [ ...aniKorea ]} = data.Americas; // 데이터 위치명: [배열의 각 원소들을 가변적으로 받는다.] = 데이터 있는 위치
var {japan: [ ...aniJapan ]} = data.Americas; // 데이터 위치명: [배열의 각 원소들을 가변적으로 받는다.] = 데이터 있는 위치
var extractedkorea = {ko: [ ...aniKorea ]} // {원하는 키명 : [복사해온 데이터들]}
var extractedJapan = {jp: [ ...aniJapan ]} // {원하는 키명 : [복사해온 데이터들]}
extractedkorea.ko.forEach(function(el, i) { // 데이터 배열을 반복해서 접근합니다.
templates(el)
$('.korea').append(templateGroble)
});
extractedJapan.jp.forEach((el) => { // 데이터 배열을 반복해서 접근합니다.
templates(el)
$('.japan').append(templateGroble)
})
});
});
</script>
Last updated