귀농 전까지 쓰는 개발 일지

<JavaScript> 2차원 배열 선언 / 정렬(Sort) 본문

공부/JavaScript

<JavaScript> 2차원 배열 선언 / 정렬(Sort)

한호잉 2023. 1. 29. 15:16

코테서 쓸 일 많아 정리

2차원 배열 선언

1. 초기값 할당

var arr = [[1, 2, 3], [4, 5, 6]];
console.log(arr);    //[ [ 1, 2, 3 ], [ 4, 5, 6 ] ]

 

2. 반복문

var arr = new Array();
for(var i=0; i<2; i++){
    arr[i] = new Array(3);
}
console.log(arr);     //[ [ <3 empty items> ], [ <3 empty items> ] ]

 

3. push

var arr = new Array();
var arr2 = new Array(3);
arr.push(arr2, arr2);

console.log(arr);     //[ [ <3 empty items> ], [ <3 empty items> ] ]

 

4. from 

var arr = new Array(Array.from({length: 2}));
console.log(arr);     //[ [ undefined, undefined ] ]

// i(index) 매개변수 전달해 1씩 증가하는 변수도 가능
var arr2 = new Array(Array.from({length: 2}, (v,i) => i));
console.log(arr2);     //[ [ 0, 1 ] ]

 

6. ES6문법 fill, map

var arr = new Array(2).fill().map(() => new Array(3).fill(0));
console.log(arr);     //[ [ 0, 0, 0 ], [ 0, 0, 0 ] ]

//참고!! new Array(N) 사용하지 않고 배열 선언하는 법 -> 속도 문제 개선
var arr2;
(arr2 = []).length = 5;
arr2.fill(0);     //[ 0, 0, 0, 0, 0 ]

 

 

2차원 배열 정렬 (내장함수 sort사용)

Sort  

- 구조

arr.sort([compareFunction])

//compareFunction : 정렬 순서 정의

 - 활용

//1차원 배열 정렬
var arr = [5, 2, 1, 4, 3]
arr.sort();
console.log(arr);   //[1, 2, 3, 4, 5]

//2차원 배열 정렬 
//arr2[x][0] asc, arr2[x][1] asc 기준 정렬
var arr2 = [[ -1, -2 ], [ 1, 1 ], [ -1000, 1 ], [ 1, 10 ]];
arr.sort((a, b)=>{
	if (a[0]==b[0]){
    	return a[1]-b[1];  //a-b>0 이라면 swap
    } else {
    	return a[0]-b[0];  //a-b>0 이라면 swap
});

*정렬 요소가 많아질 경우 map 사용도 고려