💡 이번에 배운 내용
- Section1.
웹 프론트엔드 개발의 기초지식을 기반으로 스스로 단순한 Web App을 만들 수 있다.- Unit 9. Javascript 배열, 객체: 배열과 객체, 그 메서드에 대해 학습한다.
배열과 객체는 크게 어렵지 않았지만 각 메서드와 그 특징, 메서드가 mutable인지 immutable인지 확실히 알아두지 않으면 문제풀기 어려웠던 유닛이었다.
다행히 계속해서 정리하며 학습해서 메서드를 크게 헷갈리지는 않았다.
그리고 배열과 객체의 구조가 흥미롭고 여러 데이터를 다루는데 실용적이어서
개인적으로 재미도 있었다.🥹
연습 코딩문제는 저번만큼 어렵지 않았지만 이 기세로 부디 다른 코딩문제들도 저번보다는 수월히 풀길 바랄 뿐이다......!
배열, 객체, array, object, index, Array.isArray(array), mutable, immutable, dot notation(점 표기법), bracket notation(괄호 표기법), for...of, for...in
배열은 리스트에 여러 값을 포함하고 있는 하나의 객체이며 순서가 있는 값이다.
배열의 순서는 인덱스(index), 값은 요소(elements) 라고 한다.
배열은 대괄호([], square bracket)안에 각각의 요소가 쉼표로 구분되어 있다.
배열은 console.table(배열); 구문을 이용하면 쉽게 그 구조를 알 수 있다.
let myArray=[1,2,3,4];
배열의 요소는 인덱스를 이용해 접근하며 재할당으로 값 변경이 가능하다.
없는 인덱스의 값은 undefined이다.
또한 배열은 중첩이 가능하다.
배열의 메서드는 여러 가지가 있다.
split(), join(), slice(), splice(), Array.isArray(), push(), unshift(), pop(), shift(), indexOf(), includes()
이 메서드를 무작정 외우기보다 어떤 기능이 있고,
mutable한지 immutable한지 확실히 알아두는 것이 중요하다.
(myArray는 임의의 배열이다.)
for(let i=0; i<myArray.length; i++){
console.log(myArray[i]); //배열의 요소를 하나씩 출력
}
//let i=0; 인덱스가 0으로 시작하므로 0부터 시작
//i<myArray.length; 배열의 길이만큼 반복. 0부터 시작하니 미만
//i++ 하나씩 증가
공통적인 속성을 가진 데이터를 여럿 다뤄야 할 때,
객체를 사용하는 것이 좋다.
만약 이 데이터를 배열로 처리한다면 각 요소가 어떤 의미를 가지고 있는지 직접 매변 확인해 봐야 한다.
객체는 키와 값의 쌍으로 구성되어 있다.(key:value)
키와 값 사이에는 콜론(:)으로 구분하고
키-값과 키-값 사이는 콤마(,)로 구분한다.
전체는 중괄호({})로 묶인다.
let user1={
name: 'lee',
age: 21,
id: 'n1234'
};
//1. dot notaion
console.log(user1.name); // 'lee'
//2. bracket notation
console.log(user1['name']); // 'lee'
만약 bracket notation의 경우 잘못 접근했을 경우 에러가 뜬다.
ex. user1[name]
-> Uncaught ReferenceError: name is not defined
그리고 bracket notation은 키 명이 동적으로 변할 때 용이하다.
let obj1={ a:'1',b:2,c:'aef'};
let result=Object.entries(obj1);
console.log(result);
/*
(3) [Array(2), Array(2), Array(2)]
0: (2) ['a', '1']
1: (2) ['b', 2]
2: (2) ['c', 'aef']
length: 3
[[Prototype]]: Array(0)
*/
참고 및 출처:
lilyoh.log - js object 요소에 접근하고 순회하기
intrepidgeeks.com - javascript 객체 순회
javascript MDN - Object.keys()
javascrpit MDN - for...in
javascript MDN - Object.entries()
1. typeof가 모든 타입을 그대로 나타내지 못할 때는?
null과 array는 "object"로 출력된다.
때문에 null은 따로 예외로 비교해야하고,
array인 경우 Array.isArray(검사할 값)를 사용해야 한다.
something===null; //something이 null이면 true, 아니면 false
Array.isArray(something); //something이 배열이면 true, 아니면 false
참고:
javascript MDN - typeof
javascript MDN - isArray()
2. for in과 for of
const myObject = { first: 1, second: 2, third: 3 }; //a,b,c는 키, 1,2,3은 각 값
for (const property in object) {
console.log(`${property}: ${object[property]}`);
//'키: 값' 을 출력
}
참고 및 출처: javascript MDN - for...in
const myArray = ['first', 'second', 'third'];
for (const el of myArray) {
console.log(el); // 배열의 각 요소를 차례로 출력
}
참고 및 출처 : javascript MDN - for...of
3. 변수에 배열을 할당하고, 변수에 요소를 추가하거나 삭제하면?
놀랍게도 원본 배열도 같이 변경된다!
let arr1=[1,2,3];
let result=arr1;
result.push(4);
console.log(arr1); //1,2,3,4
이 문제를 해결하기 위해서는 변수에 배열을 slice()를 이용해 복사하여 할당해야 한다.
let arr1=[1,2,3];
let result=arr1.slice();
result.push(4);
console.log(arr1); //1,2,3
4. join() 메서드
join(기준)메서드는 ()안의 기준으로 배열의 요소들을 연결하여 문자열을 만든다.
join()일 경우 배열의 요소들을 ','로 연결하여 문자열을 만들고
join('')일 경우 배열의 요소들을 모두 붙여서 문자열을 만든다.
참고 및 출처: javascript MDN - join()
5. 추가학습 : JSON
JSON(JavaScript Object Notation)은 Javascript 구조화된 데이터를 표현하기 위한 문자 기반의 표준 형식이다. 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용하며 객체와 유사한 형식을 갖고 있다.
(객체처럼 생겼지만 객체와 달리 키 부분이 문자열이다.)
원하는 정보에 접근할 때 객체와 마찬가지 방식으로 접근할 수 있다.
(다행히 지난번 터미널에 대해 학습하며 npm, node를 다룰 때 본 거라 모양새가 크게 어색하지 않았다.)
참고 및 출처: javascript MDN - JSON
6. 키 이름을 넣지 않아도 자동으로 지정된다?!
(220927 추가)
변수에 값을 할당하고, 값만 있는 변수로 객체를 만들면?
자동으로 변수명이 키 명이 된다.
let a='apple';
let b='banana';
let result1={a,b}
let result2={a,monky:b}
console.log(result1);
//{a: 'apple', b: 'banana'}
console.log(result2);
//{a: 'apple', monky: 'banana'}