객체(object)
자료형의 일종으로 다양한 값을 모아둔 또다른 값
객체의 종류는 크게 배열(array), 함수(function), 배열이나 함수가 아닌 객체로 나눌 수 있음
const fruits=['사과', '오렌지', '배', '딸기']
console.log(fruits[0]);
console.log(fruits[1]);
console.log(fruits[2]);
console.log(fruits[3]);
현재 배열 안에 있는 값은 모두 문자열이지만, 값의 자료형이 모두 같아야 할 필요는 없음
배열 안에 다른 배열이나 변수를 넣을 수도 있음
const arrayOfArray=[[1,2,3],[4,5]];
arrayOfArrya[0]; //[1,2,3]
const a = 10;
const b = 20;
const variableArray=[a,b,30];
variableArray[1]; //20(b의 값)
arrayOfArray[0]을 하면 [1,2,3] 값이 나오는데 이러한 배열을 이차원 배열이라고 함
const everything = ['사과',1,undefined, true, '배열', null];
const duplicated = ['가','가','가','가','가'];
const empty = [];
배열 내부에 든 값을 요소(elements)라고 함
.length를 이용
const emptyValue = [null, undefined, false, '', NaN];
console.log(emptyValue.length); //5
const findLastElement = ['a','b','c','d','e'];
console.log(findLastElement[findLastElement.length-1]); //e
문제
arr라는 배열이 있을 때 배열의 마지막에서 세 번째 요소를 찾아보기
정답
const arr = ['강','양','군','멋','져'];
console.log=(arr[arr.length-3]);
배열 마지막에 요소를 추가하기
const target = ['a','b','c','d','e'];
target[5] ='f';
console.log=(target);
배열의 길이가 가변적일 경우, 아래와 같은 방법으로 마지막에 요소를 추가할 수 있음
const target = ['a','b','c','d','e'];
target[target.length] ='f';
console.log=(target)는
배열의 마지막에 요소를 추가하는 또다른 방법으로는 push를 이용할 수 있음
const ex = ['가','나','다','라','마'];
ex.push('바');
console.log=(ex);
배열의 제일 앞에 값을 추가하고 싶은 경우, unshift 사용
const letter = ['나','다','라','마','바'];
letter.unshift('가');
console.log=(letter);
const인데 수정 가능한 이유는?
const에는 새로운 값을 대입(=)하는 것만 못하는 것이고, 객체(배열, 함수, 객체 리터럴)에 대입된 경우 객체 내부의 속성이나 배열의 요소는 수정이 가능함
수정을 원하는 인덱스에 바꿀 값을 넣어주면 됨
const ex = ['가','나','다','라','마','바'];
ex.pop();
console.log=(ex);
const letter = ['가','나','다','라','마','바'];
letter.shift();
console.log=(letter);
const letter = ['가','나','다','라','마','바'];
letter.splice(1,3); //두 번째 요소 이후부 세개를 지움
console.log=(letter); //가, 마, 바
const letter = ['가','나','다','라','마','바'];
letter.splice(1,3,'타', '파'); //두 번째 요소 이후부 세개를 지우고 그 자리에 타, 파를 넣음
console.log=(letter); //가, 타, 파, 마, 바
const letter = ['가','나','다','라','마','바'];
letter.splice(4); //네 번쨰 요소부터 뒤에를 다 지움
console.log=(letter); //가, 나, 다, 라
const letter = ['가','나','다','라','마'];
letter.splice(1,0,'바',); //넣고 싶은 곳의 인덱스를 넣고, 요소 추가
console.log=(letter); //가, 바, 나, 다, 라, 마
일종의 검색 기능인 includes
const array = ['가','나','다','라','마'];
const result1 = array.includes('다');
const result2 = array.includes('카');
console.log(result1); //true
console.log(result2); //false
indexOf와 lastIndexOf 기능을 사용
const array = ['라','나','다','라','다'];
const result1 = array.indexOf('다');
const result2 = array.lastIndexOf('라');
const result3 = array.indexOf('가');
console.log(result1); //2
console.log(result2); //3
console.log(result3); //-1, 요소에 없는 경우 값이 -1이 나옴
while문
const target = ['가','나','다','라','마'];
let i=0;
while(i<target.length) {
console.log(target[i]);
i++;
} //가,나,다,라,마
for문
const target = ['가','나','다','라','마'];
for (let i=0; i<target.length; i++) {
console.log(target[i]);
} //가,나,다,라,마
문제
다음 배열에서 '라'를 모두 제거하기(indexOf와 splice를 사용)
const arr = ['가','라','다','라','마','라'];
정답
while (arr.indexOf('라') > -1) {
arr.splice(arr.indexOf('라'),1)
}
문제에서 '모두'라는 말이 나오면 반복문을 사용해야 할 가능성이 높음
중복되는 문구를 지우면 아래처럼 정리할 수 있음
let index = arr.indexOf('라');
while (index > -1) {
arr.splice(index,1)
index = arr.indexOf('라');
}