[JavaScript] Array

작성자
진행일시
2021/07/24
이메일

1. [Array 선언]

Array 선언은 기본적으로 2가지 방법이 있다.
1.
new키워드를 이용하는법
2.
[ ] 를 이용한 선언
아래 예시를 확인해보자
1. Array선언의 종류 1-1 new 키워드 const arr = new Array(); 1-2 []를 이용한 선언 const arr2 = ['1','2'];
JavaScript
복사

2.[Index]

배열은 index를 기준으로 Data가 저장된다.
const fruits = ['🍔','🍗','🥡']; console.log(fruits); console.log(fruits.length); //1번쨰 음식의 출력할려면 배열에서의 []이용해 데이터에 접근가능, //Object에서는 'key'라는 string을 이용하면('name'.age)받아올수있었다 //그것처럼 배열은 숫자 index 를 전달하면 그 index에 해당하는 value를 받아올수 있다. console.log(fruits[0]); console.log(fruits[1]); //배열의 마지막 index를 찾고 싶을 때 // 배열은 index가 0부터 시작하므로 전체 길이의 -1를하면 마지막 index의 정보를 가지고 올 수 있다. console.log(fruits[fruits.length - 1]);
JavaScript
복사

3.[ Looping over an Array]

배열은 반복문을 이용하여 Data를 추출할 수 있다.
JavaScript에서는 총 3가지의 방법으로 Data를 추출
ㅁ 배열 예시 설정
const fruits = ['🍔','🍗','🥡'];
JavaScript
복사
1.
for
for(let i = 0; i < fruits.length; i++){ console.log(fruits[i]); }
JavaScript
복사
2.
for of
for of 사용법 : for(for (const iterator of object) { console.log(iterator) } for(let fruit of fruits) { console.log(fruit) }
JavaScript
복사
3.
for Each(Callback함수를 받아온다)
/** * Performs the specified action for each element in an array. * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; //3. forEach(callback함수를 받아온다) fruits.forEach(function(fruit, index){ console.log(fruit,index); }); console.log('익명함수는 arrow함수로 변경가능') fruits.forEach((fruit,index) => { console.log(fruit,index); }); console.log('한줄만 있는경우 () 생략가능') fruits.forEach((fruit,index) => console.log(fruit,index
JavaScript
복사

4. [ Addition, Deletion, Copy]

배열에서 값을 어떻게 add하고 ,delete하고 copy하는지 알아보자
1.
push : add an item to the end (뒤에서 부터 값을 넣는다)
const fruits = ['🍔','🍗','🥡']; fruits.push('🍿');
JavaScript
복사
2.
pop : remove an item from the end ( 뒤에서 부터 값을 뺀다)
fruits.pop();
JavaScript
복사
1.
unshift : add an item to the beginning(앞에서 부터 값을 추가)
fruits.unshift('🥖','🥞');
JavaScript
복사
4.
shift : remove an item from the beginning(앞에서 부터 값을 삭제)
fruits.shift();
JavaScript
복사

**[Note]**

shift, unshift는 pop, push보다 속도가 느리다.
why ? 왜그럴까!!
pop과 push처럼 뒤에서부터 공간을 넣었다 빼는거는 빈공간에 추가햇다 지웠다가 하는거라 기존에 들어있는 데이터들을 움직이지 않아도되어서 한 공간에 index를 이용해서 넣고 뺴고 넣고뺴고 되서 빠르게 진행됨.
반대로 shift나 unshift앞에서 데이터를 넣을려면 원래있던 데이터를 뒤로하나씩 밀어서 맨앞을 비워놓고 집어넣어야하기떄문에이런일을 반복적으로해야되서 즉 배열의 길이가 길수록 shift, unshift 할려면 반복적으로 해야하기때문에 시간이 오래걸린다.
그래서 pop, push로하는게 속도면에서 좋다.
그리고 한가지 더 중요한 포인트는 제일 뒤에서 아이템에 접근하는것은 정말빠르고 중간에 데이터를 넣고 뺴는것도 인덱스를 활용해서하므로 빠르다
하지만 무언가 배열의 전체 데이터를 움직여야한다. shift, unshift처럼 느릴수밖에 없다, 
길이가 길수록 더 느리다.

5. [splice - remove an item by index position]

splice : item을 지정된 포지션에서 삭제하는것
fruits.push('🧁','🥗','🍻'); console.log(fruits); // splice()는 만약 시작인덱스만쓰고 뒤에 몇개지울지 지정을 안해주면 // 시작인덱스부터 그 뒤에있는 인덱스에 data들을 다 삭제 // splice()는 시작인덱스, 시작인덱스부터 몇개지울지 count를 param으로 넘겨줘야한다 // ex : 1번쨰 인덱스부터 2개를 지우고싶다 fruits.splice(1,1); console.log('splice적용') console.log(fruits); //fruits.splice(1,1,'','') -> 지워진 자리에 뒤에 데이터를 넣어준다 fruits.splice(1,1,'🍷','🍾');
JavaScript
복사

6. [concat - combine two arrays]

concat : 배열들을 합쳐 준다.
const fruits2 = ['🍒','🍫']; //frutis뒤에 fruits2를 묶는다. const newFruits = fruits.concat(fruits2); console.log(newFruits);
JavaScript
복사

7. [Searching - find the Index]

JavaScript에서는 배열에서의 해당 index를 찾기위해서 indexOf와 lncludes를 쓴다.
//indexOf => 해당 배열이 몇번째에 있는지( 만약 해당하는 값이 없으면 -1이 출력!!) console.log(fruits.indexOf('🍷')) ; //includes => 해당 index가 포함이 되어있는지(true or false 반환) console.log(fruits.includes('🍷'));
JavaScript
복사

8. [lastIndexOf]

lastIndexOf : 배열의 index를 앞에서 찾지 않고 뒤에서부터 찾아들어가서 index를 반환해준다
console.log(fruits); fruits.push('🥞'); console.log(fruits); //indexOf는 앞에서 부터 찾기 시작 console.log(fruits.indexOf('🥞')); //lastIndexOf는 뒤에서부터 찾기 시작 console.log(fruits.lastIndexOf('🥞'));
JavaScript
복사