Frontend/JavaScript

[JavaScript] ํ•œ๋ฒˆ์— ํ•˜๋Š” ๋ฐฐ์—ด ์ƒ์„ฑ & ์ดˆ๊ธฐํ™”

_์„ฑํ˜ธ_ 2022. 9. 28. 21:19
728x90
๋ฐ˜์‘ํ˜•

JavaScript์˜ ๋ฐฐ์—ด(Array)๋Š” ๊ฐ์ฒด(ํ•จ์ˆ˜)๋‹ค.

  • ๋”ฐ๋ผ์„œ, ๋Œ€ํ‘œ์  ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ธ ์ž๋ฐ”์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ new Array()๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ๋ฐฐ์—ด์˜ ์ƒ์„ฑ์ž(new Array())์™€ ํ•˜๋‚˜์˜ ์ˆซ์ž ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ ๊ฒฐ๊ณผ๋Š” length๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ณ , ๊ธธ์ด๋งŒํผ์˜ ๋นˆ ์Šฌ๋กฏ์„ ๊ฐ€์ง„ ๋ฐฐ์—ด์ด๋‹ค. ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐ๊ฐ’์„ ํ™•์ธํ•ด๋ณด๋ฉด undefined๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
let datas = new Array(5)

console.log(datas[0])     // undefined
console.log(datas.length) // 5

 

  • ์•„๋ž˜์™€ ๊ฐ™์ด new Array()์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์›ํ•˜๋Š” ์ดˆ๊ธฐ๊ฐ’๋“ค์„ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒ์„ฑ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๋™์‹œ์— ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐฐ์—ด์˜ ๊ธธ์ด์— ๋”ฐ๋ผ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค. 
// new Array()๋กœ ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •
let datas = new Array(1, 2, 3, 4, 5);

console.log(datas); // [1, 2, 3, 4, 5]
console.log(datas[0]) // 1
console.log(datas.length) // 5
// ๊ธธ์ด๊ฐ€ 1000, new Array()๋กœ ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •
let datas = new Array(1, 2, 3, 4, ..., 1000);
// datas ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐ๊ฐ’์„ ์ „๋ถ€ ์ง์ ‘ ์ž…๋ ฅํ•ด์ค˜์•ผ ํ•œ๋‹ค. (์‹ค์ˆ˜์—†์ด..)

 

  • JavaScript์—๋Š” ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋Š” Array.from() ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. Array.from() ํ•จ์ˆ˜๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด(length ์†์„ฑ๊ณผ ์ธ๋ฑ์‹ฑ ๋œ ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด) ๋ฐ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์–•๊ฒŒ ๋ณต์‚ฌํ•ด ์ƒˆ๋กœ์šด Array ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.
// Array.from()์œผ๋กœ ๊ธธ์ด๊ฐ€ 5, ๊ฐ’์ด (1 ~ 5)์ธ ๋ฐฐ์—ด ์ƒ์„ฑ
// ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜ value, ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜ index
let datas = Array.from({length: 5}, (v, i) => i + 1); // i(index) + 1

console.log(datas); // [1, 2, 3, 4, 5]
console.log(datas[0]); // 1
console.log(arr.length); // 5

 

๋งˆ๋ฌด๋ฆฌ.. ๐Ÿ˜ƒ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ํ•˜๋Š” ๋„์ค‘์— ๊ฐ’์ด 1๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•   ํ•„์š”๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ง์ ‘ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” new Array(length).fill(0)์„ ์ด์šฉํ•ด ์›ํ•˜๋Š” ๊ธธ์ด๋งŒํผ์˜ ๋ฐฐ์—ด์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ ๋‹ค์Œ map() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฆฌํ„ด๋ฐ›์•„์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋ณต์žกํ•œ ๋ถ€๋ถ„์ด ์–ด๋Š์ •๋„ ์žˆ์—ˆ๊ธฐ์— ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์ฐพ๋˜ ์ค‘ Array.from()์„ ์ฐพ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์ฐพ๊ณ  ๊ณต๋ถ€๋ฅผ ํ–ˆ์œผ๋‹ˆ ์˜ค๋Š˜๋„ ๋ณด๋žŒ์ฐฌ ํ•˜๋ฃจ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹คโ—

์ด ๊ธ€์„ ์ฝ๊ณ  ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”~๐Ÿ™

 

์ฐธ๊ณ ํ•œ ์‚ฌ์ดํŠธ

https://velog.io/@kler/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%B0%B0%EC%97%B4-%EC%83%9D%EC%84%B1-%EC%B4%88%EA%B8%B0%ED%99%94-%ED%95%9C%EB%B2%88%EC%97%90-%ED%95%98%EA%B8%B0

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด ์ƒ์„ฑ & ์ดˆ๊ธฐํ™” ํ•œ๋ฒˆ์— ํ•˜๊ธฐ

๋”ฐ๋ผ์„œ, ๋Œ€ํ‘œ์  ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ธ ์ž๋ฐ”์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ new Array()๊ฐ€ ์กด์žฌํ•œ๋‹ค.new Array()์˜ ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋„˜๊ฒจ์„œ ํŠน์ • ๊ธธ์ด๋กœ ๋ฐฐ์—ด์˜ ์ƒ์„ฑ์€ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ,์ดˆ๊ธฐ๊ฐ’์€ undefined๋กœ ์„ค์ •

velog.io