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차원 랜덤수 채운 배열
'Web > Javascript' 카테고리의 다른 글
이벤트 전파 (0) | 2020.02.07 |
---|---|
마우스 이벤트 연습하기 (0) | 2020.02.06 |
인피니트 스크롤 구현 공식 (0) | 2020.01.28 |
자주 사용하는 배열 메소드 -map,forEach,reduce,filter (0) | 2020.01.16 |
자주 사용하는 배열 메소드 - join,indexOf,slice,concat (0) | 2020.01.16 |