새오의 개발 기록

Javascript: Array.fill() 본문

Javascript

Javascript: Array.fill()

새오: 2023. 1. 14. 15:33

배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채우는 메소드

 

  arr.fill(value[, start[, end]])

 

  • fill 메서드는 value, start, end의 3개 인자를 가집니다. 
  • start와 end 인자는 선택 사항으로써 기본값으로 각각 0과, this 객체의 length를 가집니다.
  • length가 배열의 길이일 때, start가 음수이면 시작 인덱스는 length+start입니다. end가 음수이면 끝 인덱스는 length+end입니다.
  • fill은 일반 함수이며, this 값이 배열 객체일 필요는 없습니다.
  • fill 메서드는 변경자 메서드로, 복사본이 아니라 this 객체를 변형해 반환합니다.
  • value에 객체를 받을 경우 그 참조만 복사해서 배열을 채웁니다.

 

const array1 = [1, 2, 3, 4];

// Fill with 0 from position 2 until position 4
console.log(array1.fill(0, 2, 4));
// Expected output: Array [1, 2, 0, 0]

// Fill with 5 from position 1
console.log(array1.fill(5, 1));
// Expected output: Array [1, 5, 5, 5]

console.log(array1.fill(6));
// Expected output: Array [6, 6, 6, 6]



[1, 2, 3].fill(4);               // [4, 4, 4]
[1, 2, 3].fill(4, 1);            // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2);         // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1);         // [1, 2, 3]
[1, 2, 3].fill(4, 3, 3);         // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2);       // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3]
[1, 2, 3].fill(4, 3, 5);         // [1, 2, 3]
Array(3).fill(4);                // [4, 4, 4]
[].fill.call({ length: 3 }, 4);  // {0: 4, 1: 4, 2: 4, length: 3}

// Objects by reference.
var arr = Array(3).fill({}); // [{}, {}, {}]
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]

 

  • 객체로도 채울 수 있는데 arr[0].hi = "hi"; 부분은 잘 모르겠다.
  • [].fill.call({ length: 3 }, 4);

 

 

 

프로그래머스에서 문제를 풀다가 

다른사람의 풀이를 보고 찾아본 메소드

 

 

    return Array(n).fill(x).map((v, i) => (i + 1) * v)

 

 

 

 

Array.prototype.fill() - JavaScript | MDN

fill() 메서드는 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채웁니다.

developer.mozilla.org

 

'Javascript' 카테고리의 다른 글

Javascript: Math.floor()  (0) 2023.01.19
Javascript: Math.abs()  (0) 2023.01.16
Javascript: fs 모듈로 입력 받기  (0) 2023.01.12
javascript: hoisting 호이스팅  (0) 2022.10.03
Javascript: 이벤트 버블링과 캡쳐  (0) 2022.09.28