일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- route
- react
- DOM
- opencv
- HTML
- IOT
- JavaScript
- Component
- raspberrypi
- react-query
- swipe
- 딥러닝
- nvidia
- useEffect
- props
- useParams
- 정렬
- TypeScript
- image
- 공부
- State
- ContextAPI
- localStorage
- CSS
- Router
- 자율주행
- Redux
- Ajax
- 러닝타입스크립트
- axios
- Today
- Total
개발일지
Javascript 공부 #4 본문
Array / Object 자료형
여러가지 자료를 한 곳에 저장하고 싶을 때 사용하는 자료형들
배열 Array
var car = ['소나타', 50000, 'white'];
다음과 같이 배열에 저장 가능
Object
var car2 = { name : '소나타', price : 50000 };
딕셔너리 처럼 사용
자료를 꺼내쓸 때는 car2[’name’] 또는 car2.name와 같이 사용할 수 있다.
실제 웹서비스 개발 2가지 방식
사용자가 사이트로 접속하면 HTML 을 잘 만들어서 보내주는 것을 웹서비스 라고 한다.
HTML을 누가 완성하는지에 따라 개방방식의 차이가 존재
1. 서버에서 HTML을 미리 완성해서 고객에게 보내줌
이러한 방식을 server-side rendering 이라고 한다.
2. 서버가 비어있는 HTML과 데이터만 보내줌
그리고 자바스크립트를 이용하여 고객 브라우저 안에서 HTML을 완성한다.
이러한 방식을 client-side rendering 이라고 한다.
요즘은 2번 client-side rendering 이 유행이라 데이터를 서버에서 가져와서 데이터바인딩 하는 방법을 배우고 있는 것
하지만 데이터바인딩을 하는 문법이 너무 길고 복잡하기에 작은 사이트는 자바스크립트 만으로도 커버가 가능한데, 프로젝트의 규모가 클 경우 사람들이 라이브러리를 설치해서 사용하는 것이다.
jQuery, React, Vue 등 사용하면 코드가 짧아진다.
1번, 2번 방식 둘다 각각 장단점이 존재한다.
Array, Object 활용한 데이터바인딩 예제
<div class="card-group container">
<div class="card">
<img src="https://via.placeholder.com/600">
<div class="card-body">
<h5>Card title</h5>
<p>가격 : 70000</p>
<button class="btn btn-danger">주문하기</button>
</div>
</div>
<div class="card">
<img src="https://via.placeholder.com/600">
<div class="card-body">
<h5>Card title</h5>
<p>가격 : 70000</p>
<button class="btn btn-danger">주문하기</button>
</div>
</div>
<div class="card">
<img src="https://via.placeholder.com/600">
<div class="card-body">
<h5>Card title</h5>
<p>가격 : 70000</p>
<button class="btn btn-danger">주문하기</button>
</div>
</div>
</div>
<script>
var products = [
{ id : 0, price : 70000, title : 'Blossom Dress' },
{ id : 1, price : 50000, title : 'Springfield Shirt' },
{ id : 2, price : 60000, title : 'Black Monastery' }
];
</script>
위의 HTML 코드에 이름과 가격 데이터바인딩
var cardTitle = document.querySelectorAll(".card-body h5");
var cardPrice = document.querySelectorAll(".card-body p");
var cardNum = cardTitle.length;
console.log(cardNum);
for (let i = 0; i < cardNum; i++) {
cardTitle[i].innerHTML = products[i].title;
cardPrice[i].innerHTML = "가격 : " + products[i].price;
}
HTML 코드에 class 달아준 후, 위와같이 코드 완성
문자열 중간에 변수 삽입하고 싶을 때
Select Input
<form class="container my-5 form-group">
<p>상품선택</p>
<select class="form-select mt-2">
<option>모자</option>
<option>셔츠</option>
</select>
</form>
<select> 는 <input> 과 같은데, 사용자가 고를 수 있는 선택지를 드랍다운 메뉴로 제공하는 <input> 이다.
그냥 <input>을 사용하면 사용자에게 정해진 답변을 강제할 수 있다는 장점이 있다.
선택지는 <option>을 사용하면 된다.
- <select> 태그도 선택시 input, change 이벤트가 발생한다.
- <select> 태그도 .value 로 유저가 입력한 값 가져올 수 있다.
동적으로 태그 생성하기
var pants = [28, 30, 32, 35];
var shirts = [95, 100, 105];
var cap = ["free-size"];
$(".form-select")
.eq(0)
.on("change", function () {
if ($(this).val() == "shirts") {
$(".form-select").eq(1).html("");
shirts.forEach(function (data) {
$(".form-select").eq(1).append(`<option>${data}</option>`);
});
} else if ($(this).val() == "cap") {
$(".form-select").eq(1).html("");
cap.forEach(function (data) {
$(".form-select").eq(1).append(`<option>${data}</option>`);
});
} else if ($(this).val() == "pants") {
$(".form-select").eq(1).html("");
pants.forEach(function (data) {
$(".form-select").eq(1).append(`<option>${data}</option>`);
});
}
});
위와 같이 서버에서 배열형식으로 데이터들을 받아왔다 가정하고
forEach() 반복문을 사용하여 배열안에 있는 값들을 순차적으로 가져올 수 있다.
forEach() 함수는 괄호안에 콜백함수 사용하여 위와같은 문법으로 사용하는 것을 볼 수 있다.
콜백함수 안의 파라미터는 2개까지 작명 가능한데 첫 번째 파라미터는 반복문을 돌 때마다 array 안에 있던 하나하나의 데이터가 되고, 두 번째 파라미터는 반복문을 돌 때마다 0부터 1씩 증가하는 정수가 된다.
object 자료형 사용할 때는 for in 반복문을 사용해준다
var obj = { name : 'kim', age : 20 }
for (var key in obj){
console.log(key);
console.log(obj[key]);
}
위와같이 obj 안에 있는 key 와 value 출력할 수 있다.
반복문 사용 용도
- 코드 복붙하고 싶을 때
- array, object 자료 전부 꺼내서 쓰고 싶을 때
arrow function 문법
콜백함수 만들 때 자주 쓰는 방식인 arrow function
var pants = [28, 30, 32];
pants.forEach(function(a){
console.log(a)
});
pants.forEach((a) => {
console.log(a)
});
function 키워드 대신 ⇒ 를 사용한다.
arrow function은 파라미터가 하나이면 () 소괄호 생략해도 괜찮다.
함수 중괄호 안에 return 한 줄 밖에 없으면 {} return 동시에 생략해도 괜찮다. 간결하기 때문에 콜백함수에 자주 사용된다.
그냥 함수와 arrow function 의 기능차이 하나가 있는데
함수 안에서 this를 써야하는 경우
- 그냥 함수는 함수 안에서 this 를 알맞게 재정의 해준다.
- arrow function 은 함수 안에서 this 를 재정의해주지 않고 바깥에 있던 this 를 그대로 쓴다.
그래서 이벤트리스너 콜백함수 안에 this 를 써야할 때 arrow function 을 쓰면 의도와 다르게 동작할 수도 있다. 그런곳에선 쓰면 안된다.
'Javascript' 카테고리의 다른 글
this 키워드 (0) | 2023.07.06 |
---|---|
Javascript 공부 #6 (0) | 2023.01.20 |
Javascript 공부 #5 (1) | 2023.01.16 |
Javascript 공부 #2 (0) | 2023.01.12 |
Javascript 공부 #1 (0) | 2023.01.12 |