[JS] Array.fill() ๋ฉ์๋ ์ฌ์ฉ ์ ์ฃผ์ํ ์
Array.fill()
๋ฉ์๋๋ ์ด๋ฆ ๊ทธ๋๋ก ์ฒซ ๋ฒ์งธ ์ธ์์ ์ฃผ์ด์ง ๊ฐ์ผ๋ก ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ฑ์ฐ๋ ๋ฉ์๋๋ค. ์ฃผ๋ก Array()
์์ฑ์์ ํจ๊ป ์ฌ์ฉํ์ฌ, ์ด๊ธฐ๊ฐ์ด ํ ๋น๋ ๋ฐฐ์ด์ ์์ฑํ ๋ ์ ์ฉํ๊ฒ ์ฐ์ธ๋ค.
Array.fill(value, start?, end?)
// length๊ฐ 2์ธ ๋น ๋ฐฐ์ด ์์ฑ ํ null๋ก ์ฑ์
const filledArray = Array(2).fill(null);
console.log(filledArray); // [null, null]
const numbers = [1, 2, 3, 4];
// 2~3๋ฒ ์ธ๋ฑ์ค๋ฅผ null๋ก ์ฑ์ (start ํฌํจ, end ๋ฏธํฌํจ)
numbers.fill(null, 2, 4);
console.log(numbers); // [1, 2, null, null]
์ด๋ ์ฃผ์ํ ์ ์, ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ fill(value)
๋ฉ์๋ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ value
๊ฐ์ ๊ฐ๋ฆฌํจ ๋ค๋ ๊ฒ์ด๋ค. ๋ง์ฝ value
๊ฐ ๊ฐ์ฒด๋ผ๋ฉด ๋ชจ๋ ์์๋ ๋์ผํ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ค.
const arr = Array(2).fill({ name: "John" });
console.log(arr); // [{ name: 'John' }, { name: 'John' }]
console.log(arr[0] === arr[1]); // true
ํจ์๋ฅผ ์ฌ์ฉํด ๊ฐ์ ์์ฑํ๊ณ fill()
์ธ์๋ก ๋๊ฒจ๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฐฐ์ด ๋ด ๋ชจ๋ ์์๋ ๋์ผํ ์ฐธ์กฐ ๊ฐ์ ๊ณต์ ํ๋ค. ์๋ ์์ ์ getUser()
ํจ์๋ ํธ์ถ๋ ๋๋ง๋ค ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ฐํํ์ง๋ง, fill()
์ธ์์์ ์ฌ์ฉํ๋ฉด ๋จ ํ ๋ฒ๋ง ํธ์ถ๋๋ฉฐ, ์์ฑ๋ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ํ ๋น๋๋ค.
const getUser = (name = "John") => {
console.count("getUser"); // getUser: 1 (1ํ ํธ์ถ)
return { name };
};
const arr = Array(2).fill(getUser());
console.log(arr); // [{ name: 'John' }, { name: 'John' }]
console.log(arr[0] === arr[1]); // true
๊ฐ ์์๊ฐ ๋
๋ฆฝ์ ์ธ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ผ ํ๋ ๊ฒฝ์ฐ fill()
๋ฉ์๋ ๋ณด๋จ, Array.from()
์ ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๊ฒ ๋ ์ ์ ํ๋ค. Array.from()
๋ฉ์๋๋ ์ ์ฌ๋ฐฐ์ด ํน์ ์ดํฐ๋ฌ๋ธ์ ๋ฐ์ ์์ ๋ณต์ฌ ํ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ๋๋ฐ, ๋ ๋ฒ์งธ ์ธ์๋ก ๋งคํ ํจ์๋ฅผ ๋๊ธธ ์ ์๋ค.
Array.from(arrayLike, mapFn(element, index)?)
const getUser = (name = "John") => {
console.count("getUser"); // getUser: 2 (2ํ ํธ์ถ)
return { name };
};
// length๊ฐ 2์ธ ๋ฐฐ์ด์ ์์ฑํ๊ณ ๊ฐ ์์์ getUser ํจ์๋ฅผ ํธ์ถํ์ฌ ๊ฐ์ฒด ์์ฑ
const arr = Array.from({ length: 2 }, getUser);
console.log(arr); // [{ name: 'John' }, { name: 'John' }]
console.log(arr[0] === arr[1]); // false
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[Algorithm] ๋ฏธ๋๋งฅ์ค / ์ํ-๋ฒ ํ ๊ฐ์ง์น๊ธฐ ์๊ณ ๋ฆฌ์ฆ ํบ์๋ณด๊ธฐ
[Algorithm] ๋ฏธ๋๋งฅ์ค / ์ํ-๋ฒ ํ ๊ฐ์ง์น๊ธฐ ์๊ณ ๋ฆฌ์ฆ ํบ์๋ณด๊ธฐ
2024.06.01 -
[React] ํฑํํ (Tic-Tac-Toe) ๊ฒ์ ์ฃผ์ ๋ก์ง ํบ์๋ณด๊ธฐ
[React] ํฑํํ (Tic-Tac-Toe) ๊ฒ์ ์ฃผ์ ๋ก์ง ํบ์๋ณด๊ธฐ
2024.05.30 -
[JS] Bitwise ๋นํธ ์ฐ์ฐ์ ํบ์๋ณด๊ธฐ (feat. ๋นํธ๋ง์คํฌ)
[JS] Bitwise ๋นํธ ์ฐ์ฐ์ ํบ์๋ณด๊ธฐ (feat. ๋นํธ๋ง์คํฌ)
2024.05.29 -
[JS] ์ ๋์ฝ๋์ ์ ๋์ฝ๋ ํ๋กํผํฐ
[JS] ์ ๋์ฝ๋์ ์ ๋์ฝ๋ ํ๋กํผํฐ
2024.05.29