Array

dev_crystal·2021년 11월 9일
0

배열 생성

let daysOfWeek = new Array('일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일');
let daysOfWeek2 = ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일']; // better

배열 합치기

let daysOfWeek1 = ['일요일', '월요일'];
let daysOfWeek2 = ['화요일'];
let daysOfWeek3 = ['수요일', '목요일', '금요일', '토요일'];
daysOfWeek1.concat(daysOfWeek2, daysOfWeek3);

원소 추가/삭제

배열 끝 추가/삭제
push(element) / pop()
배열 앞 추가/삭제
unshift(element) / shift()
n번째 요소 추가/삭제
splice(startIndex, 0, addElement1, addElement2...) / splice(startIndex, deleteElementsLength)

// 배열 끝에 새 원소 추가
numbers[numbers.length] = 10;
numbers.push(11);

// 배열 앞에 새 원소 추가
for (var i=numbers.length; i>=0; i--){
    numbers[i] = numbers[i-1];
}
numbers[0] = -1;

numbers.unshift(-2);

// 배열 끝의 원소 삭제
numbers.pop();

// 배열 앞의 원소 삭제
numbers.shift();

// n번째 원소 추가, 삭제
numbers.splice(5, 3);
numbers.splice(5, 0, 4, 5, 6);

다차원 배열

테이블처럼 배열을 만듭니다. x축과 y축의 의미를 담아 볼 수 있겠네요!

let averageTemp = [];

averageTemp[0] = [72,75,79,79,81,81];
averageTemp[1] = [81,79,75,75,73,72];

// 다차원 배열 확인하기
function printMatrix(myMatrix) {
    for (var i=0; i<myMatrix.length; i++){
        for (var j=0; j<myMatrix[i].length; j++){
            console.log(myMatrix[i][j]);
        }
    }
}

반복 메서드

every

  • 함수의 결과 값이 false가 될때까지 배열의 모든 원소를 반복.
  • 모두 true여야만 true를 반환함
numbers = [0,1,2,3,4,5,6];
numbers.every((number) => number % 2 === 0);

some

  • 함수의 결과 값이 true가 나올 때까지 배열의 모든 원소를 반복
  • 하나라도 true가 나오면 true를 반환함
numbers = [0,1,2,3,4,5,6];
numbers.some((number) => number % 2 === 0);

foreach

  • 조건에 상관없이 배열의 모든 원소를 반복
numbers = [0,1,2,3,4,5,6];
numbers.foreach((number) => console.log(number));

map

  • 콜백함수를 실행한 결과를 새 배열로 반환
numbers = [0,1,2,3,4,5,6];
numbers.map((number) => console.log(number));

filter

  • 콜백함수의 조건을 만족하는 결과들만 모아 새 배열로 반환
numbers = [0,1,2,3,4,5,6];
numbers.filter((number) => number % 2 === 0);

reduce

  • 각 원소를 순회하면서 콜백함수를 실행한 계산값을 누적하여 최종 결과값을 반환

    reduce(reducer, initialValue);
    reducer = (prevValue, currentValue, currentIndex, array) => { return value }

    • currentIndex: 처리할 현재 요소의 인덱스. initialValue를 제공한 경우 0, 아니면 1부터 시작합니다.
    • array: reduce()를 호출한 배열.
numbers = [0,1,2,3,4,5,6];
numbers.reduce((pre, cur) => pre + cur, 0);

정렬

reverse

  • 정렬을 거꾸로 바꿈
let numbers = [1, 2, 3, 4, 5, 10, 11, 12, 13, 14];
numbers.reverse();

sort

  • 모든 원소를 문자열로 취급하여 사전적으로 정렬함
// 숫자형 오름차순 정렬: 음수 값이 나오면 앞으로, 0이면 동등, 양수면 뒤로 정렬함.
let numbers = [1, 2, 3, 4, 5, 10, 11, 12, 13, 14];
numbers.sort((a, b) => a - b);

// 알파벳 정렬: 대소문자 구별 없이 비교
let names =['Ana', 'ana', 'john', 'John'];
names.sort((a, b) => a.toLowerCase() - b.toLowerCase());

// 악센트 문자라면
let names2 = ['Ma챔ve', 'Maeve'];
console.log(names2.sort(function(a, b){
    return a.localeCompare(b);
}));

검색

indexOf

  • 해당하는 원소가 없으면 -1을 반환
  • 해당하는 원소가 있으면 맞는 첫번째 원소의 인덱스를 반환
let numbers = [1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 10, 15];
numbers.indexOf(10); // 5

lastIndexOf

  • 해당하는 원소가 없으면 -1을 반환
  • 해당하는 원소가 있으면 맞는 마지막 원소의 인덱스를 반환
let numbers = [1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 10, 15];
numbers.indexOf(10); // 10

문자열 변환

toString

  • 배열의 모든 원소를 하나의 문자열로 바꿈. ,가 자동으로 붙음
let numbers = [1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 10, 15];
numbers.toString();

join

  • 배열의 모든 원소를 문자열로 바꿈. 매개변수로 원하는 구분자를 넣을 수 있고 빈문자열을 넣으면 아무런 구분자없이 만들 수 있음
let numbers = [1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 10, 15];
numbers.join("");
numbers.join("-");
profile
개발자

0개의 댓글