๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“‚ Language/JavaScript

JavaScript ๋ฐฐ์—ด ๊ธฐ์ดˆ ๊ฐœ๋… - ์ธ๋ฑ์Šค, ๋ฐ˜๋ณต, ๋ฉ”์†Œ๋“œ

by Dev. Ella 2023. 2. 27.

1. ๋ฐฐ์—ด์ด๋ž€?

์ˆœ์„œ(index)๊ฐ€ ์žˆ๋Š” ๊ฐ’(element)์˜ ์ง‘ํ•ฉ์ด๋‹ค.

์ด๋•Œ, ์ˆœ์„œ๋Š” 1์ด ์•„๋‹ˆ๋ผ 0๋ถ€ํ„ฐ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธฐ๋ฉฐ, ๋Œ€๊ด„ํ˜ธ [ ] ๋ฅผ ์ด์šฉํ•ด ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ๊ฐ๊ฐ์˜ ์›์†Œ(element)๋Š” ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•ด ์ค€๋‹ค.

 

a. ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๊ฐ’ ๊ตฌํ•˜๊ธฐ

let myNumber = [73, 98, 86, 61, 96];
// myNumber ๋ผ๋Š” ๋ฐฐ์—ด์˜ 3๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์€?
myNumber[3]; // 61

let myNumber = [73, 98, 86, 61, 96];
// myNumber ๋ผ๋Š” ๋ฐฐ์—ด์˜ 5๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์€?
myNumber[5]; // undefined : ์ด ๋ฐฐ์—ด์€ 4๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’ ๊นŒ์ง€ ๋ฐ–์— ์—†๋‹ค.

 

b. ๋ฐฐ์—ด ์•ˆ์— ์žˆ๋Š” ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๊ฐ’ ๊ตฌํ•˜๊ธฐ

let myNumber = [[13, 30], [73, 8], [44, 17]];
// myNumber ๋ผ๋Š” ๋ฐฐ์—ด์˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์€?
myNumber[1]; // [73, 8]: [13] ์•„๋‹˜ ์ฃผ์˜!

let myNumber = [[13, 30], [73, 8], [44, 17]];
// myNumber ๋ผ๋Š” ๋ฐฐ์—ด์˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค๊ฐ’์˜ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ๊ฐ’์€?
myNumber[1]; // 73

let myNumber = [[13, 30], [73, 8],[44, 17]]; 
myNumber[1]; // [73, 8]
myNumber[1][0]; // 73: ์ด๋ ‡๊ฒŒ ๋Œ€๊ด„ํ˜ธ์™€ ๋Œ€๊ด„ํ˜ธ๋ฅผ ๋ถ™์—ฌ์„œ๋„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

c. ๋ฐฐ์—ด์˜ ๊ธธ์ด ์•Œ์•„๋‚ด๊ธฐ

let myNumber = [73, 98, 86, 61];
// myNumber ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š”?
myNumber.length; // 4: ์˜จ์ ์„ ํ™œ์šฉํ•ด ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ

 

d. ๋ฐฐ์—ด๋กœ ๋งจ ๋’ค์˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๊ธฐ

์˜จ์ (.)์œผ๋กœ ๊ด€๋ จ๋œ ๋ช…๋ น(method: ํ”ํžˆ ๋งํ•˜๋Š” ๋ฉ”์†Œ๋“œ)๋„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ๋Š” ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋“ฏ ๊ด„ํ˜ธ ์—ด๊ณ  ๋‹ซ๊ธฐ ํ˜•ํƒœ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 

ley myNumber = [73, 98, 86, 61];

// myNumber ๋ฐฐ์—ด ๋์— 96 ์ด๋ผ๋Š” ๊ฐ’์„ '์ถ”๊ฐ€'ํ•˜๋ ค๋ฉด
myNumber.push(96); 

// myNumber ๋ฐฐ์—ด ๋งˆ์ง€๋ง‰ ๊ฐ’์„ '์‚ญ์ œ'ํ•˜๋ ค๋ฉด
myNumber.pop();

 

 

2. ๋ฐฐ์—ด์˜ ๋ฐ˜๋ณต

a. ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ํ•œ๋ฒˆ์”ฉ ์ถœ๋ ฅํ•˜๊ธฐ

let myNum = [73, 98, 86, 61];
for (let n = 0; n < myNum.length; n++) { // for๋ฌธ์„ ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด ๋ณต์Šตํ•˜๊ณ  ์˜ค์‹œ๋ผ..
	console.log(myNum[n]);
}

 

b. ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ˆ„์ ํ•ด์„œ ๋”ํ•˜๊ธฐ

์ด๋•Œ, ์ฒ˜์Œ์— 0 ํ• ๋‹น์„ ํ•˜์ง€ ์•Š์œผ๋ฉด undefined๊ฐ€ ๋‚˜์˜ค๊ณ , ์ดˆ๊ธฐ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์•„๋ž˜์˜ ๊ณ„์‚ฐ์„ ์ญ‰ ์ง„ํ–‰ํ•˜๋ฉด NaN์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. 

let myNum = [10, 20, 40, 10];
let sum = 0; 

for(let n = 0; n < myNum.length; n++) {
// sum = 0 + 10 -> sum + myNum[0]
// sum = 10 + 20 -> sum + myNum[1]
// sum = 30 + 40 -> sum + myNum[2]
// sum = 70 + 10 -> sum + myNum[3] -> ๋งํ•˜์ž๋ฉด ์ด๋Ÿฐ ํ˜•ํƒœ์ด๋‹ˆ

sum = sum + myNum[n]; // sum์€ ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ณ„์‚ฐํ•˜์ž
}
console.log(sum); // 80

 

 

3. ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ(method)

a. Array.isArray : ํŠน์ • ๊ฐ’์ด ๋ฐฐ์—ด์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋ณ„ํ•˜๊ธฐ

let words = ['ํ”„๋ก ํŠธ', '์—”๋“œ', '๊ฐœ๋ฐœ์ž'];
typeof words // "object" : ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ words ๋ผ๋Š” ๋ฐฐ์—ด์˜ type์€ object์ž„

typeof [1, 2, 3] // "object" : ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์˜ type์€ object์ž„

Array.isArray('๋ฌธ์ž์—ด') // false : ๋ฌธ์ž์—ด์€ ๋ฐฐ์—ด์ด ์•„๋‹˜
Array.isArray(123) // false : ์ˆซ์ž๋Š” ๋ฐฐ์—ด์ด ์•„๋‹˜

Array.isArray(words) // true : words์€ ๋ฐฐ์—ด ํ˜•ํƒœ๊ฐ€ ๋งž์Œ
Array.isArray([]) // true : ๋Œ€๊ด„ํ˜ธ๋Š” ๋ฐฐ์—ด์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๋ฐฐ์—ด์ด ๋งž์Œ

 

b. push, pop : ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ์‚ญ์ œํ•˜๊ธฐ

let arr = ['frontend', 'engineer'];
console.table(arr) // Array(2)

arr.push('ella') // ๋งจ ๋’ค์— 'pre' ๋ผ๋Š” ์š”์†Œ ์ถ”๊ฐ€
console.table(arr) // Array(3)

arr.pop() // ๋งจ ๋’ค์˜ ์š”์†Œ ์ œ์™ธ
console.table(arr) // Array(2)

arr.shift() // ๋งจ ์•ž์˜ ์š”์†Œ ์ œ์™ธ
console.table(arr) // Array(1)

arr.unshift('good') // ๋งจ ์•ž์— 'good' ๋ผ๋Š” ์š”์†Œ ์ถ”๊ฐ€
console.table(arr) // Array(2)

์ฐธ๊ณ ๋กœ, ์•„๋ž˜์™€ ๊ฐ™์ด console.table(๋ฐฐ์—ด) ์„ ์ฝ˜์†”์— ์ฐ์–ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œ(table) ํ˜•์‹์œผ๋กœ index์™€ value๋ฅผ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

c. indexOf : ํŠน์ • ๊ฐ’์ด ๋ฐฐ์—ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ธ๋ฑ์Šค ๊ฐ’์„ ์•Œ์•„๋‚ด๊ธฐ

let word = ['front', 'end', 'engineer'];

word.indexOf('end') // 1 : ํ•ด๋‹น elemment๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์ธ๋ฑ์Šค ๊ฐ’
word.indexOf('engineer') // 2 : engineer์˜ ์ธ๋ฑ์Šค ๊ฐ’
word.indexOf('ella') // -1 : ์—†๋Š” ๋‹จ์–ด์ด๋ฏ€๋กœ -1 ํ‘œ์‹œ๋จ

word.indexOf('front') !== -1 // true : -1์ด ์•„๋‹ˆ๋ƒ? ์ฆ‰, ๋‹จ์–ด๊ฐ€ ์žˆ๋Š”๊ฑฐ ๋งž๋ƒ? -> ์žˆ๋‹ค(true)
word.indexOf('ella') !== -1 // false : -1์ด ์•„๋‹ˆ๋ƒ? ์ฆ‰, ๋‹จ์–ด๊ฐ€ ์žˆ๋Š”๊ฑฐ ๋งž๋ƒ? -> ์—†๋‹ค(false)

word.indexOf('FRONT') // -1 : ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋‹ˆ ์ฃผ์˜

 

d. includes : ํŠน์ • ๊ฐ’์ด ๋ฐฐ์—ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ ํ•˜๊ธฐ

ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜, includes ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. 

// 1. ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
// ํŠน์ •ํ•œ ๋ฐฐ์—ด์— ์ฐพ๊ณ ์žํ•˜๋Š” element ํฌํ•จ ์—ฌ๋ถ€๋ฅผ false/true๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
// hasElement(๋ฐฐ์—ด, ์ฐพ์œผ๋ ค๋Š” ์—˜๋ฆฌ๋จผํŠธ) -> true or false
function hasElement(arr, element) {
	let isPresent = arr.indexOf(element) !== -1; // ์ฐพ์œผ๋ ค๋Š” element๊ฐ€ ์žˆ๋‹ค๋ฉด (= ์—†์ง€ ์•Š๋‹ค๋ฉด)
	return isPresent; // ํ•ด๋‹น ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋ผ
}
hasElement(words, 'end') // true
hasElement(words, 'ella') // false

// 2. ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
let words = ['front', 'end', 'engineer'];
words.includes('end') // true
words.includes('ella') // false

๋Œ“๊ธ€