본문 바로가기

Web/Javascript

Javascript 배열( 선언과 초기화 및 활용 ) 틈틈이 추가예정

1. 배열을 생성하는 방법들

let arr = Array(5); //길이가 5인 empty 배열

 

let arr1 = new Array(3); //new 키워드를 통해 길이가 3인 빈 배열이 생성. empty상태인 배열

 

let arr2 = [];

 

2. 2차원 배열 선언하기

const arr = new Array([1,2,3],[4,5,6]); // [[1,2,3],[4,5,6]]이 생성됨

 

const arr = Array(Array(7,8,9), Array(4,5,6));

 

const arr = [[0,1,2],[3,4,5]];

 

//map함수를 통해 각 요소에 또 하나의 Array를 생성해 반환한다.
const arr = Array(배열길이).fill().map((v,i) => {return Array(값1, 값2);}); 

const arr = Array(3).fill().map((v,i) => {
	return Array(i, Math.floor(Math.random()*10) );
}); 

 

3.배열 + 메소드 조합 응용

ㄱ. fill메소드로 배열 선언과 초기화 한번에

let arr3 = new Array(3).fill('1'); //길이가 3인 모든 요소가 1로 채워진 배열이 생성된다.

let arr4 = new Array(3).fill();//길이가 3이고 undefined로 채워진 배열생성 

/* undefined와 empty와 null의 차이 
undefine은 아직 변수는 선언됐지만 값이 할당되지 않은, undefine 데이터 타입
null의 타입은 null인데 object로 나온다. 찾아보니 개발자의 실수라고 한다ㅎ
empty는 typeof를 하면 undefined가 나오지만, 어떤 데이터가 아닌 그냥 비어있는 상태를 가리킨다.
그래서,
let test = [undefine,undefine,null]; 이라고 치면 길이가 3인 배열이 생성되지만,
let test = [undefine,undefine,null, empty]; 는 empty is not defined 오류가 난다.
*/

 

ㄴ. fill() + map() 조합으로 생성, 초기화 한번에 

let filled_Array = new Array(배열길이).fill().map((v,i) => i); // 연속적인 값 채우기
// 0 - 10사이 랜덤한 수 채우기
let filled_Array = new Array(배열길이).fill().map(() => Math.floor(Math.random()*10)); 

 

ㄷ. reduce() + map() 조합으로 2차원 배열 행과열 바꾸기 

const array = [[1,2,3],[4,5,6],[7,8,9]];
array.reduce((result, row) => row.map((_, i) => [...(result[i] || []), row[i]]),[]);
//결과는 [[1,4,7],[2,5,8],[3,6,9]]

 

ㄹ. 유사 배열을 배열로 바꿔주는 from() 메소드로 배열 만들기 

const array = Array.from(Array(4), () => Array()); // 2차원 빈 배열

const array = Array.from(Array(4), () => Math.floor(Math.random()*9)); //1차원 랜덤수 채운 배열