๋ฐฐ์—ด

RHUK2ยท2022๋…„ 1์›” 4์ผ
0

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
20/56

๐Ÿ“ข 22/05/30 ๋ณต์Šต


๐Ÿ“š Reference


javascript.info, https://ko.javascript.info/array

์ฐธ๊ณ  ์‚ฌ์ดํŠธ์— ๋‚ด์šฉ์„ ๊ฐœ์ธ์ ์œผ๋กœ ๋ณต์Šตํ•˜๊ธฐ ํŽธํ•˜๋„๋ก ์žฌ๊ตฌ์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.
์ž์„ธํ•œ ์„ค๋ช…์€ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ๋ฅผ ์‚ดํŽด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ๋‹ด์€ ์ปฌ๋ ‰์…˜์€ ๊ฐ์ฒด๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด ์ €์žฅํ•˜๋Š”๋ฐ, ๊ฐ์ฒด๋งŒ์œผ๋กœ๋„ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ์ฒซ ๋ฒˆ์งธ ์š”์†Œ, ๋‘ ๋ฒˆ์งธ ์š”์†Œ, ์„ธ ๋ฒˆ์งธ ์š”์†Œ ๋“ฑ๊ณผ ๊ฐ™์ด ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์ด ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์ƒ๊ธฐ๊ณค ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋‚˜ ๋ฌผ๊ฑด, HTML ์š”์†Œ ๋ชฉ๋ก๊ฐ™์ด ์ผ๋ชฉ์š”์—ฐํ•˜๊ฒŒ ์ˆœ์„œ๋ฅผ ๋งŒ๋“ค์–ด ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ง์ด์ฃ .

์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์„ ๋‹ค๋ค„์•ผ ํ•  ๋•Œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ˆœ์„œ์™€ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ์—†์–ด ๊ทธ๋‹ค์ง€ ํŽธ๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ํƒœ์ƒ์ด ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜๋ฉด ์ƒˆ๋กœ์šด ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ธฐ์กด ํ”„๋กœํผํ‹ฐ "์‚ฌ์ด์—" ๋ผ์›Œ ๋„ฃ๋Š” ๊ฒƒ๋„ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿด ๋• ๐Ÿ’ฅ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์„ ์ €์žฅํ•  ๋•Œ ์“ฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ธ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ฐฐ์—ด ์„ ์–ธ


์•„๋ž˜ ๋‘ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋นˆ ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let arr = new Array();
let arr = [];

๋Œ€๋ถ€๋ถ„ ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋Š”๋ฐ, ์ด๋•Œ ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ์ดˆ๊ธฐ ์š”์†Œ๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

let fruits = ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "์ž๋‘"];

๊ฐ ๋ฐฐ์—ด ์š”์†Œ์—” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ˆซ์ž(์ธ๋ฑ์Šค)๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆซ์ž๋“ค์€ ๋ฐฐ์—ด ๋‚ด ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋ฐฐ์—ด ๋‚ด ํŠน์ • ์š”์†Œ๋ฅผ ์–ป๊ณ  ์‹ถ๋‹ค๋ฉด ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž์ธ ์ธ๋ฑ์Šค๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

let fruits = ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "์ž๋‘"];

alert( fruits[0] ); // ์‚ฌ๊ณผ
alert( fruits[1] ); // ์˜ค๋ Œ์ง€
alert( fruits[2] ); // ์ž๋‘

๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์š”์†Œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

fruits[2] = "๋ฐฐ"; // ๋ฐฐ์—ด์ด ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "๋ฐฐ"]๋กœ ๋ฐ”๋€œ

์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

fruits[3] = "๋ ˆ๋ชฌ"; // ๋ฐฐ์—ด์ด ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "๋ฐฐ", "๋ ˆ๋ชฌ"]์œผ๋กœ ๋ฐ”๋€œ

length๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์— ๋‹ด๊ธด ์š”์†Œ๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let fruits = ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "์ž๋‘"];

alert( fruits.length ); // 3

๐Ÿ”ฅ ๋ฐฐ์—ด ์š”์†Œ์˜ ์ž๋ฃŒํ˜•์—” ์ œ์•ฝ์ด ์—†์Šต๋‹ˆ๋‹ค.

// ์š”์†Œ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž๋ฃŒํ˜•์ด ์„ž์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค.
let arr = [ "์‚ฌ๊ณผ", { name: "์ด๋ณด๋ผ" }, true, function() { alert("์•ˆ๋…•ํ•˜์„ธ์š”."); } ];

// ์ธ๋ฑ์Šค๊ฐ€ 1์ธ ์š”์†Œ(๊ฐ์ฒด)์˜ name ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
alert( arr[1].name ); // ์ด๋ณด๋ผ

// ์ธ๋ฑ์Šค๊ฐ€ 3์ธ ์š”์†Œ(ํ•จ์ˆ˜)๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
arr[3](); // ์•ˆ๋…•ํ•˜์„ธ์š”.

๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋Š” ๊ฐ์ฒด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‰ผํ‘œ๋กœ ๋๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let fruits = [
  "์‚ฌ๊ณผ",
  "์˜ค๋ Œ์ง€",
  "์ž๋‘",
];

trailing(๊ธธ๊ฒŒ ๋Š˜์–ด์ง€๋Š”) ์‰ผํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์ค„์˜ ์ƒ๊น€์ƒˆ๊ฐ€ ์œ ์‚ฌํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์š”์†Œ๋ฅผ ๋„ฃ๊ฑฐ๋‚˜ ๋นผ๊ธฐ๊ฐ€ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.


popยทpush์™€ shiftยทunshift


ํ(queue)๋Š” ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ๋ฐฐ์—ด๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ™”๋ฉด์— ์ˆœ์ฐจ์ ์œผ๋กœ ๋„์šธ ๋ฉ”์‹œ์ง€๋ฅผ ๋น„์ถ•ํ•ด ๋†“์„ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ๋•Œ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ๋Š” ์‹ค๋ฌด์—์„œ ์ƒ๋‹นํžˆ ์ž์ฃผ ์“ฐ์ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

ํ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ์—ฐ์‚ฐ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

push
๋งจ ๋์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

shift
์ œ์ผ ์•ž ์š”์†Œ๋ฅผ ๊บผ๋‚ด ์ œ๊ฑฐํ•œ ํ›„ ๋‚จ์•„์žˆ๋Š” ์š”์†Œ๋“ค์„ ์•ž์œผ๋กœ ๋ฐ€์–ด์ค๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‘ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋ฐฐ์—ด์€ ํ ์ด์™ธ์— ์Šคํƒ(stack)์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ๋„ ์“ฐ์ž…๋‹ˆ๋‹ค. ์Šคํƒ์€ ํ”ํžˆ ์นด๋“œ ํ•œ ๋ฒŒ๊ณผ ๋น„๊ต๋ฉ๋‹ˆ๋‹ค. ์Œ“์—ฌ์žˆ๋Š” ์นด๋“œ ๋งจ ์œ„์— ์ƒˆ๋กœ์šด ์นด๋“œ๋ฅผ ๋”ํ•ด์ฃผ๊ฑฐ๋‚˜ ๋นผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์Šคํƒ๋„ "ํ•œ์ชฝ ๋"์— ์š”์†Œ๋ฅผ ์ง‘์–ด๋„ฃ๊ฑฐ๋‚˜ ์ถ”์ถœ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์Šคํƒ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

push
์š”์†Œ๋ฅผ ์Šคํƒ ๋์— ์ง‘์–ด๋„ฃ์Šต๋‹ˆ๋‹ค.

pop
์Šคํƒ ๋ ์š”์†Œ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์žฅ ๋‚˜์ค‘์— ์ง‘์–ด๋„ฃ์€ ์š”์†Œ๊ฐ€ ๋จผ์ € ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํŠน์ง•์„ ์ค„์—ฌ์„œ ํ›„์ž…์„ ์ถœ(Last-In-First-Out, LIFO)์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ํ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋จผ์ € ์ง‘์–ด๋„ฃ์€ ์š”์†Œ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํ๋Š” ์„ ์ž…์„ ์ถœ(First-In-First-Out, FIFO) ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด ํ์™€ ์Šคํƒ ๋‘˜ ๋‹ค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์€ ๋ฐฐ์—ด์˜ ์ฒ˜์Œ์ด๋‚˜ ๋์— ์š”์†Œ๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ฃ .

์ด๋ ‡๊ฒŒ ์ฒ˜์Œ์ด๋‚˜ ๋์— ์š”์†Œ๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์ฃผ๋Š” ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ปดํ“จํ„ฐ ๊ณผํ•™ ๋ถ„์•ผ์—์„  ๋ฐํ(deque, Double Ended Queue)๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

pop

๋ฐฐ์—ด ๋ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ์ œ๊ฑฐํ•œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

let fruits = ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "๋ฐฐ"];

alert( fruits.pop() ); // ๋ฐฐ์—ด์—์„œ "๋ฐฐ"๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ œ๊ฑฐ๋œ ์š”์†Œ๋ฅผ ์–ผ๋Ÿฟ์ฐฝ์— ๋„์›๋‹ˆ๋‹ค.

alert( fruits ); // ์‚ฌ๊ณผ,์˜ค๋ Œ์ง€

push

๋ฐฐ์—ด ๋์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

let fruits = ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€"];

fruits.push("๋ฐฐ");

alert( fruits ); // ์‚ฌ๊ณผ,์˜ค๋ Œ์ง€,๋ฐฐ

fruits.push(...)๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ fruits[fruits.length] = ...ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๋ณด์ž…๋‹ˆ๋‹ค.

shift

๋ฐฐ์—ด ์•ž ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ์ œ๊ฑฐํ•œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

let fruits = ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "๋ฐฐ"];

alert( fruits.shift() ); // ๋ฐฐ์—ด์—์„œ "์‚ฌ๊ณผ"๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ œ๊ฑฐ๋œ ์š”์†Œ๋ฅผ ์–ผ๋Ÿฟ์ฐฝ์— ๋„์›๋‹ˆ๋‹ค.

alert( fruits ); // ์˜ค๋ Œ์ง€,๋ฐฐ

unshift

๋ฐฐ์—ด ์•ž์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

let fruits = ["์˜ค๋ Œ์ง€", "๋ฐฐ"];

fruits.unshift("์‚ฌ๊ณผ");

alert( fruits ); // ์‚ฌ๊ณผ,์˜ค๋ Œ์ง€,๋ฐฐ

push์™€ unshift๋Š” ์š”์†Œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ํ•œ ๋ฒˆ์— ๋”ํ•ด์ค„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

let fruits = ["์‚ฌ๊ณผ"];

fruits.push("์˜ค๋ Œ์ง€", "๋ฐฐ");
fruits.unshift("ํŒŒ์ธ์• ํ”Œ", "๋ ˆ๋ชฌ");

// ["ํŒŒ์ธ์• ํ”Œ", "๋ ˆ๋ชฌ", "์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "๋ฐฐ"]
alert( fruits );

๋ฐฐ์—ด์˜ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ


๐Ÿ’ฅ ๋ฐฐ์—ด์€ ํŠน๋ณ„ํ•œ ์ข…๋ฅ˜์˜ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด arr์˜ ์š”์†Œ๋ฅผ arr[0]์ฒ˜๋Ÿผ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์€ ๊ฐ์ฒด ๋ฌธ๋ฒ•์—์„œ ์™”์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋ฐฐ์—ด์€ ํ‚ค๊ฐ€ ์ˆซ์ž๋ผ๋Š” ์ ๋งŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ˆซ์ž ํ‚ค๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฐฐ์—ด์€ ๊ฐ์ฒด ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์ด์™ธ์—๋„ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์„ ์ œ์–ดํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. length๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋„ ์ œ๊ณตํ•˜์ฃ . ๊ทธ๋ ‡์ง€๋งŒ ์–ด์จŒ๋“  ๋ฐฐ์—ด์˜ ๋ณธ์งˆ์€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ฐฐ์—ด์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ผ๊ณฑ ๊ฐ€์ง€ ์›์‹œ ์ž๋ฃŒํ˜•์— ํ•ด๋‹นํ•˜์ง€ ์•Š๊ณ , ์›์‹œ ์ž๋ฃŒํ˜•์ด ์•„๋‹Œ ๊ฐ์ฒดํ˜•์— ์†ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ๊ฐ์ฒด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.

let fruits = ["๋ฐ”๋‚˜๋‚˜"]

let arr = fruits; // ์ฐธ์กฐ๋ฅผ ๋ณต์‚ฌํ•จ(๋‘ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ)

alert( arr === fruits ); // true

arr.push("๋ฐฐ"); // ์ฐธ์กฐ๋ฅผ ์ด์šฉํ•ด ๋ฐฐ์—ด์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

alert( fruits ); // ๋ฐ”๋‚˜๋‚˜,๋ฐฐ - ์š”์†Œ๊ฐ€ ๋‘ ๊ฐœ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐ์—ด์„ ๋ฐฐ์—ด๋‹ต๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์€ ํŠน์ˆ˜ ๋‚ด๋ถ€ ํ‘œํ˜„๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์•„๋ž˜์ชฝ ๊ทธ๋ฆผ์—์„œ์ฒ˜๋Ÿผ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ธ์ ‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ฐจ๋ก€๋กœ ์ €์žฅํ•ด ์—ฐ์‚ฐ ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ• ์ด์™ธ์—๋„ ๋ฐฐ์—ด ๊ด€๋ จ ์—ฐ์‚ฐ์„ ๋” ๋น ๋ฅด๊ฒŒ ํ•ด์ฃผ๋Š” ์ตœ์ ํ™” ๊ธฐ๋ฒ•์€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐฐ์—ด์„ "์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ž๋ฃŒ์˜ ์ปฌ๋ ‰์…˜"์ฒ˜๋Ÿผ ๋‹ค๋ฃจ์ง€ ์•Š๊ณ  ์ผ๋ฐ˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋‹ค๋ฃจ๋ฉด ์ด๋Ÿฐ ๊ธฐ๋ฒ•๋“ค์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

let fruits = []; // ๋นˆ ๋ฐฐ์—ด์„ ํ•˜๋‚˜ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

fruits[99999] = 5; // ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ณด๋‹ค ํ›จ์”ฌ ํฐ ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ•ด ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

fruits.age = 25; // ์ž„์˜์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ฐฐ์—ด์€ ๊ฐ์ฒด์ด๋ฏ€๋กœ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ์›ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ๋ฐฐ์—ด์„ ์ผ๋ฐ˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋‹ค๋ฃจ๊ฒŒ ๋˜์–ด ๋ฐฐ์—ด์„ ๋‹ค๋ฃฐ ๋•Œ๋งŒ ์ ์šฉ๋˜๋Š” ์ตœ์ ํ™” ๊ธฐ๋ฒ•์ด ๋™์ž‘ํ•˜์ง€ ์•Š์•„ ๋ฐฐ์—ด ํŠน์œ ์˜ ์ด์ ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๋ฐฉ๋ฒ•์˜ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ arr.test = 5 ๊ฐ™์ด ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
๐Ÿ“Œ arr[0]๊ณผ arr[1000]๋งŒ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ทธ์‚ฌ์ด์— ์•„๋ฌด๋Ÿฐ ์š”์†Œ๋„ ์—†๋Š” ๊ฒฝ์šฐ
๐Ÿ“Œ arr[1000], arr[999]๊ฐ™์ด ์š”์†Œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ฑ„์šฐ๋Š” ๊ฒฝ์šฐ

๋ฐฐ์—ด์€ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๋Š” ์šฉ๋„๋กœ ๋งŒ๋“ค์–ด์ง„ ํŠน์ˆ˜ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด ๋‚ด์žฅ ๋ฉ”์„œ๋“œ๋“ค์€ ์ด๋Ÿฐ ์šฉ๋„์— ๋งž๊ฒŒ ๋งŒ๋“ค์–ด์กŒ์ฃ . ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ด๋Ÿฐ ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๋ฐฐ์—ด์„ ์‹ ์ค‘ํ•˜๊ฒŒ ์กฐ์ •ํ•˜๊ณ , ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ๋• ์ด๋Ÿฐ ๋ชฉ์ ์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ž„์˜์˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ฐฐ์—ด๋ณด๋‹จ ์ผ๋ฐ˜ ๊ฐ์ฒด {}๊ฐ€ ์ ํ•ฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ผ ํ™•๋ฅ ์ด ๋†’์Šต๋‹ˆ๋‹ค.


์„ฑ๋Šฅ


push์™€ pop์€ ๋น ๋ฅด์ง€๋งŒ shift์™€ unshift๋Š” ๋Š๋ฆฝ๋‹ˆ๋‹ค.

๋ฐฐ์—ด ์•ž์— ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐฐ์—ด ๋์— ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋ณด๋‹ค ๋Š๋ฆฐ ์ด์œ ๋ฅผ ์‹คํ–‰ ํ๋ฆ„์„ ์‚ดํŽด๋ณด๋ฉด์„œ ์•Œ์•„๋ด…์‹œ๋‹ค.

shift ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด ์ธ๋ฑ์Šค๊ฐ€ 0์ธ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋ก  ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ๊ฑฐ ๋Œ€์ƒ์ด ์•„๋‹Œ ๋‚˜๋จธ์ง€ ์š”์†Œ๋“ค์˜ ์ธ๋ฑ์Šค๋ฅผ ์ˆ˜์ •ํ•ด ์ค˜์•ผ ํ•˜์ฃ .

shift ์—ฐ์‚ฐ์€ ์•„๋ž˜ 3๊ฐ€์ง€ ๋™์ž‘์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•ด์•ผ ์ด๋ค„์ง‘๋‹ˆ๋‹ค.

๐Ÿ• ์ธ๋ฑ์Šค๊ฐ€ 0์ธ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ•‘ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋•Œ ์ธ๋ฑ์Šค 1์€ 0, 2๋Š” 1๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ•’ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋ฐฐ์—ด์— ์š”์†Œ๊ฐ€ ๋งŽ์œผ๋ฉด ์š”์†Œ๊ฐ€ ์ด๋™ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๊ธธ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์—ฐ์‚ฐ๋„ ๋งŽ์•„์ง‘๋‹ˆ๋‹ค.

unshift๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ๋„ ์ด์™€ ์œ ์‚ฌํ•œ ์ผ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์š”์†Œ๋ฅผ ๋ฐฐ์—ด ์•ž์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ผ๋‹จ ๊ธฐ์กด ์š”์†Œ๋“ค์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œ์ผœ์•ผ ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์ธ๋ฑ์Šค๋„ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด push๋‚˜ pop์€ ์–ด๋–จ๊นŒ์š”? ์ด ๋‘˜์€ ์š”์†Œ ์ด๋™์„ ์ˆ˜๋ฐ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. pop ๋ฉ”์„œ๋“œ๋กœ ์š”์†Œ๋ฅผ ๋์—์„œ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  length ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ ์ค„์—ฌ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜์ฃ .

pop ๋ฉ”์„œ๋“œ๋Š” ์š”์†Œ๋ฅผ ์˜ฎ๊ธฐ์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฐ ์š”์†Œ๋Š” ๊ธฐ์กด ์ธ๋ฑ์Šค๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด ๋์— ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ์˜ ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅธ ์ด์œ ๋Š” ๋ฐ”๋กœ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

push ๋ฉ”์„œ๋“œ๋ฅผ ์“ธ ๋•Œ๋„ ์œ ์‚ฌํ•œ ๋™์ž‘์ด ์ผ์–ด๋‚˜๋ฏ€๋กœ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค.


๋ฐ˜๋ณต๋ฌธ


for๋ฌธ์€ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•  ๋•Œ ์“ฐ๋Š” ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ˆœํšŒ์‹œ์—” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

let arr = ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "๋ฐฐ"];

for (let i = 0; i < arr.length; i++) {
  alert( arr[i] );
}

๋ฐฐ์—ด์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์ˆœํšŒ ๋ฌธ๋ฒ•์œผ๋ก  for..of๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

let fruits = ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "์ž๋‘"];

// ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋ฐ˜๋ณต ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
for (let fruit of fruits) {
  alert( fruit );
}

for..of๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋Š” ์–ป์„ ์ˆ˜ ์—†๊ณ  ๊ฐ’๋งŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •๋„ ๊ธฐ๋Šฅ์ด๋ฉด ์›ํ•˜๋Š” ๊ฒƒ์„ ์ถฉ๋ถ„ํžˆ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฌธ๋ฒ•๋„ ์งง๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋ฐ˜๋ณต ์ž‘์—…์„ ํ•  ๋• for..of๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฐฐ์—ด์€ ๊ฐ์ฒดํ˜•์— ์†ํ•˜๋ฏ€๋กœ for..in์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

let arr = ["์‚ฌ๊ณผ", "์˜ค๋ Œ์ง€", "๋ฐฐ"];

for (let key in arr) {
  alert( arr[key] ); // ์‚ฌ๊ณผ, ์˜ค๋ Œ์ง€, ๋ฐฐ
}

๊ทธ๋Ÿฐ๋ฐ for..in์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ์ง€๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์— for..in์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋˜๋„๋ก ๋‹ค๋ฅธ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

for..in ๋ฐ˜๋ณต๋ฌธ์€ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ˆœํšŒํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ํ”„๋กœํผํ‹ฐ๋„ ์ˆœํšŒ ๋Œ€์ƒ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋‚˜ ๊ธฐํƒ€ ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์“ฐ์ด๋Š” ๊ฐ์ฒด ์ค‘, ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•œ ํ˜•ํƒœ๋ฅผ ๋ณด์ด๋Š” "์œ ์‚ฌ ๋ฐฐ์—ด(array-like)" ๊ฐ์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด์—” ๋ฐฐ์—ด์ฒ˜๋Ÿผ length ํ”„๋กœํผํ‹ฐ๋„ ์žˆ๊ณ  ์š”์†Œ๋งˆ๋‹ค ์ธ๋ฑ์Šค๋„ ๋ถ™์–ด ์žˆ์ฃ . ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์— ๋”ํ•˜์—ฌ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด์—” ๋ฐฐ์—ด๊ณผ๋Š” ๋‹ฌ๋ฆฌ ํ‚ค๊ฐ€ ์ˆซ์žํ˜•์ด ์•„๋‹Œ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด์™€ for..in์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋Œ€์ƒ์œผ๋กœ ์ˆœํšŒ๊ฐ€ ์ด๋ค„์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "ํ•„์š” ์—†๋Š”" ํ”„๋กœํผํ‹ฐ๋“ค์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์ƒ๊น๋‹ˆ๋‹ค.

for..in ๋ฐ˜๋ณต๋ฌธ์€ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ ๊ฐ์ฒด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ์ตœ์ ํ™”๋˜์–ด ์žˆ์–ด์„œ ๋ฐฐ์—ด์— ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋Œ€๋น„ 10~100๋ฐฐ ์ •๋„ ๋Š๋ฆฝ๋‹ˆ๋‹ค. for..in ๋ฐ˜๋ณต๋ฌธ์˜ ์†๋„๊ฐ€ ๋Œ€์ฒด๋กœ ๋น ๋ฅธ ํŽธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ‘๋ชฉ ์ง€์ ์—์„œ๋งŒ ๋ฌธ์ œ๊ฐ€ ๋˜๊ธด ํ•ฉ๋‹ˆ๋‹ค๋งŒ, for..in ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ๋• ์ด๋Ÿฐ ์ฐจ์ด๋ฅผ ์•Œ๊ณ  ์ ์ ˆํ•œ ๊ณณ์— ์‚ฌ์šฉํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ ๋ฐฐ์—ด์—” ๋˜๋„๋ก for..in๋ฅผ ์“ฐ์ง€ ๋งˆ์„ธ์š”.


"length" ํ”„๋กœํผํ‹ฐ


๋ฐฐ์—ด์— ๋ฌด์–ธ๊ฐ€ ์กฐ์ž‘์„ ๊ฐ€ํ•˜๋ฉด length ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ’ฅ length ํ”„๋กœํผํ‹ฐ๋Š” ๋ฐฐ์—ด ๋‚ด ์š”์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ€์žฅ ํฐ ์ธ๋ฑ์Šค์— 1์„ ๋”ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์— ์š”์†Œ๊ฐ€ ํ•˜๋‚˜ ์žˆ๊ณ , ์ด ์š”์†Œ์˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„์ฃผ ํฐ ์ •์ˆ˜๋ผ๋ฉด ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ๋„ ์•„์ฃผ ์ปค์ง‘๋‹ˆ๋‹ค.

let fruits = [];
fruits[123] = "์‚ฌ๊ณผ";

alert( fruits.length ); // 124

๋ฐฐ์—ด์„ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ์‹œ๋‹ค.

length ํ”„๋กœํผํ‹ฐ์˜ ๋˜ ๋‹ค๋ฅธ ๋…ํŠนํ•œ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

length์˜ ๊ฐ’์„ ์ˆ˜๋™์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐ’์„ ๊ฐ์†Œ์‹œํ‚ค๋ฉด ๋ฐฐ์—ด์ด ์ž˜๋ฆฝ๋‹ˆ๋‹ค. ์งง์•„์ง„ ๋ฐฐ์—ด์€ ๋‹ค์‹œ ๋˜๋Œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

let arr = [1, 2, 3, 4, 5];

arr.length = 2; // ์š”์†Œ 2๊ฐœ๋งŒ ๋‚จ๊ธฐ๊ณ  ์ž˜๋ผ๋ด…์‹œ๋‹ค.
alert( arr ); // [1, 2]

arr.length = 5; // ๋ณธ๋ž˜ ๊ธธ์ด๋กœ ๋˜๋Œ๋ ค ๋ด…์‹œ๋‹ค.
alert( arr[3] ); // undefined: ์‚ญ์ œ๋œ ๊ธฐ์กด ์š”์†Œ๋“ค์ด ๋ณต๊ตฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ํŠน์ง•์„ ์ด์šฉํ•˜๋ฉด arr.length = 0;์„ ์‚ฌ์šฉํ•ด ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฐฐ์—ด์„ ๋น„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


new Array()


์œ„์—์„œ๋„ ์ž ์‹œ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ new Array() ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด๋„ ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let arr = new Array("์‚ฌ๊ณผ", "๋ฐฐ", "๊ธฐํƒ€");

๋Œ€๊ด„ํ˜ธ []๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์งง์€ ๋ฌธ๋ฒ•์œผ๋กœ ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— new Array()๋Š” ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํŽธ์ž…๋‹ˆ๋‹ค. new Array()์—” ๋‹ค๋ฃจ๊ธฐ ๊นŒ๋‹ค๋กœ์šด ๊ธฐ๋Šฅ๋„ ์žˆ์–ด์„œ ๋”์šฑ๋” ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์ˆซ์žํ˜• ์ธ์ˆ˜ ํ•˜๋‚˜๋ฅผ ๋„ฃ์–ด์„œ new Array๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐฐ์—ด์ด ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, ์ด ๋ฐฐ์—ด์—” ์š”์†Œ๊ฐ€ ์—†๋Š” ๋ฐ˜๋ฉด ๊ธธ์ด๋Š” ์ธ์ˆ˜์™€ ๊ฐ™์•„์ง‘๋‹ˆ๋‹ค.

์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด new Array()์˜ ์ด๋Ÿฐ ํŠน์ง•์ด ์–ด๋–ป๊ฒŒ ์‹ค์ˆ˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค.

let arr = new Array(2); // ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฐฐ์—ด [2]๊ฐ€ ๋งŒ๋“ค์–ด์งˆ๊นŒ์š”?

alert( arr[0] ); // undefined๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ์š”์†Œ๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š” ๋ฐฐ์—ด์ด ๋งŒ๋“ค์–ด์กŒ๋„ค์š”.

alert( arr.length ); // ๊ธธ์ด๋Š” 2์ž…๋‹ˆ๋‹ค.

์œ„ ์˜ˆ์‹œ์—์„œ ํ™•์ธํ•ด ๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ new Array(number)๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“  ๋ฐฐ์—ด์˜ ์š”์†Œ๋Š” ๋ชจ๋‘ undefined ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋œป๋ฐ–์˜ ์ƒํ™ฉ์„ ๋งˆ์ฃผ์น˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด new Array์˜ ๊ธฐ๋Šฅ์„ ์ž˜ ์•Œ์ง€ ์•Š๋Š” ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์จ์„œ ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋˜๋Š” ์œ„ ํŠน์ง•์„ ์ด์šฉํ•ด์„œ ๋ฐฐ์—ด์˜ ๋ฉ”์„œ๋“œ ์ค‘ ํ•˜๋‚˜์ธ fill์„ ์ด์šฉํ•ด ๋‚ด๋ถ€ ์š”์†Œ์— ๊ฐ’์„ ๋ชจ๋‘ ํ• ๋‹นํ•œ ํ›„ ํ™œ์šฉํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

// new Array()์™€ Array()๋Š” ๋™์ผํ•œ ๋™์ž‘์„ ํ•ฉ๋‹ˆ๋‹ค.
Array(100).fill().map((_, index) => {
  alert( index );
})

[...Array(100)].map((_, index) => {
  alert( index );
})

๋‹ค์ฐจ์› ๋ฐฐ์—ด


๋ฐฐ์—ด ์—ญ์‹œ ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌ์ผœ ๋‹ค์ฐจ์› ๋ฐฐ์—ด(multidimensional array)์ด๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ ํ–‰๋ ฌ์„ ์ €์žฅํ•˜๋Š” ์šฉ๋„๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค.

let matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

alert( matrix[1][1] ); // 5, ์ค‘์‹ฌ์— ์žˆ๋Š” ์š”์†Œ

toString


๋ฐฐ์—ด์—” toString ๋ฉ”์„œ๋“œ๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ์ด๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์š”์†Œ๋ฅผ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•œ ๋ฌธ์ž์—ด์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

let arr = [1, 2, 3];

alert( arr ); // 1,2,3
alert( String(arr) === "1,2,3" ); // true
alert( [] + 1 ); // "1"
alert( [1] + 1 ); // "11"
alert( [1,2] + 1 ); // "1,21"

๋ฐฐ์—ด์—” Symbol.toPrimitive๋‚˜ valueOf ๋ฉ”์„œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ ์˜ˆ์‹œ์—์„  ๋ฌธ์ž์—ด๋กœ์˜ ํ˜• ๋ณ€ํ™˜์ด ์ผ์–ด๋‚˜ []๋Š” ๋นˆ ๋ฌธ์ž์—ด, [1]์€ ๋ฌธ์ž์—ด "1", [1,2]๋Š” ๋ฌธ์ž์—ด "1,2"๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

์ดํ•ญ ๋ง์…ˆ ์—ฐ์‚ฐ์ž "+"๋Š” ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ํ”ผ์—ฐ์‚ฐ์ž๋„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ ์˜ˆ์‹œ๋Š” ์•„๋ž˜ ์˜ˆ์‹œ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

alert( "" + 1 ); // "1"
alert( "1" + 1 ); // "11"
alert( "1,2" + 1 ); // "1,21"
profile
์ƒ๊ฐ ๋งŽ์ด ํ•˜์ง€ ์•Š๊ธฐ ๐Ÿ˜Ž

0๊ฐœ์˜ ๋Œ“๊ธ€