TIL 8일차

ᄋᄋ·2021년 11월 23일
0

배열

console.table로 배열표 만들기


배열 요소 접근

let number = [2, 5, 9, 1, 3, 4];
값은 인덱스로 접근 가능함.
number[3]; // 1
number[10]; // undefined

값 변경
number[3] = 6; // [2, 5, 9, 6, 3, 4];


이중배열

let number = [[1, 2], [3, 4], [5, 6]];
number[1]; // [3, 4]
number[1][0]; // 3


array.length

let number = [2, 5, 9, 1, 3, 4];
number.length; // 6


배열인지 아닌지 확인하기

Array.isArray(배열); // true (배열 아니면 false)
typeof 배열 또는 typeof(배열) //object
침고로 typeof null은 object가 나오니 주의해야 함. (JS의 오류..)


배열 요소 추가 및 삭제하기

push, unshift, pop, shift mutable
let number = [2, 5, 9, 1, 3, 4];


배열 요소 포함 여부 확인하기


[ ] !== [ ]

자바스크립트 상에서는 두 배열을 "주소가 다른 두 개의 빈 배열"이라고 생각함.


split( ) & join( )     // immutable

split : 문자열 --> 배열
join : 배열 --> 문자열

문자열.split() --> 문자열을 배열 안에 넣음.
배열.join() --> ' , '로 연결함.

문자열.split('') --> 문자열 문자 하나씩 쪼갬.
배열.join('') --> 배열 요소들 띄어쓰기 없이 연결함.


for (let el of arr) { 명령문 }

: for...of 명령문은 반복가능한 객체 (Array, Map, Set, String, TypedArray, arguments 객체 등을 포함)에 대해서 반복.

for (variable of iterable) {
statement
}

  • variable : 각 반복에 서로 다른 속성값이 variable에 할당됨.
  • iterable : 반복되는 열거가능(enumerable)한 속성이 있는 객체.

splice (mutable), slice(immutable)

arr.splice(start[, deleteCount[, item1[, item2[, ...]]]])
리턴값은 제거한 요소를 담은 배열임. 제거 안 하면 빈 배열 리턴함.

arr.slice([begin[, end]])
begin번 요소부터 end-1 번 요소까지 담은 새로운 배열을 리턴함.

arr.slice()은 원본 배열에서 요소의 얕은 복사본을 반환함.
+얕은 복사본이라서 중첩배열은 주소값만 복사됨(중요)!

+음수 인덱스는 맨 뒤에서 부터 세는 거임.
ex) -1은 맨 마지막 요소, -3은 뒤에서 3번째 요소임.


array.concat([value1[, value2[, ...[, valueN]]]])

: 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환함.

*매개변수 : 배열 또는 값, 만약 value1 ~ valueN 인자를 생략하면 기존배열의 복사본을 반환함.


arr.forEach(callback(currentvalue[, index[, array]])[, thisArg])

// 리턴값 : undefined
: 주어진 함수를 배열 요소 각각에 대해 실행
- callback : 각 요소에 대해 실행할 함수. 다음 세 가지 매개변수를 받음.
- currentValue : 처리할 현재 요소.
- index (Optional) : 처리할 현재 요소의 인덱스.
- array (Optional) : forEach()를 호출한 배열.
- thisArg (Optional) : callback을 실행할 때 this로 사용할 값.


arr.map(callback(currentValue[, index[, array]])[, thisArg])

: 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환


arr.filter(callback(element[, index[, array]])[, thisArg])

: 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환


*지금까지 공부하고 알게된 것

immutable 메소드는 원본에 메소드를 적용한 결과를 반환함.
근데 mutable 메소드의 경우 원본에 메소드를 적용한 결과의 길이(length)란던가, 요소를 제거한 경우, 제거한 요소 또는 제거한 요소를 담은 배열 등을 반환함. (메소드마다 다름.)

그래서 코드 짤 때 immutable 메소드의 경우,
return arr.slice(1, 5);
이엏게 바로 리턴해도 결과가 나오는데

mutable 메소드의 경우,
return arr.push(3);
이런 식으로 쓰면 내가 원하는 결과를 얻지 못함.
그래서 arr.push(3);을 먼저 써주고 return arr;해야함.


알아둬야 할 로직(코플릿)

  • 가장 큰 수 구하는 함수 + 반복문 + 배열
let arr = [5, 2, 6, 11, 9, 1];
let max = arr[0];  // 할당
for (let el of arr) {
  if (el > max) {
   max = el;
   }
}
return max;

  • 피보나치 수열 + 배열 + 반복문
let arr = [ ];
for (let i = 0; i <= num; i++) {
  if (i === 0) {
    arr.push(0);
  } else if (i === 1) {
    arr.push(1);
  } else {
    arr.push(arr[i - 2] + arr[i - 1]);
  } 
}
return arr;
profile
개발자A

0개의 댓글