๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2023. 11. 27.
let fish = ['piranha', 'koi', 'nimo(?)', 'clown-fish'];
 
// fish๋Š” ๋ฌด์Šจ object์ธ๊ฐ€?
console.group('object์˜ ์‹ค์ฒด(?) ํ™•์ธ');
console.log(typeof fish); // object? what kind of object?
console.log(Array.isArray(fish)); // ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ array ๊ฐ์ฒด์ธ์ง€ ํ™•์ธ, true/false
console.groupEnd();

// 1. ์›๋ณธ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” mutator methods.

// 1.pop() : ์›๋ณธ ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ๋ ์š”์†Œ ์ œ๊ฑฐ, ํ•ด๋‹น ๊ฐ’ ๋ฐ˜ํ™˜, ์ถ”๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์Œ.
console.group('pop()');
console.log(`์ œ๊ฑฐ๋œ ๊ฐ’ : ${fish.pop()}`);
console.log(fish);
console.groupEnd();

// 2.shift() : ์›๋ณธ ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ(์•ž) ์š”์†Œ ์ œ๊ฑฐ.
console.group('shift()');
console.log(`์ œ๊ฑฐ๋œ ๊ฐ’ : ${fish.shift()}`); // ๋ชจ๋“  ์š”์†Œ๋“ค์˜ ์ธ๋ฑ์Šค๊ฐ€ ์•ž์œผ๋กœ ํ•œ ์นธ ๋‹น๊ฒจ์ ธ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ƒ pop()์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ.
console.log(fish);
console.groupEnd();

// 3.push() : ์›๋ณธ ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ๋์— ์ƒˆ๋กœ์šด ์š”์†Œ ์ถ”๊ฐ€.
console.group('push()');
console.log(`์ถ”๊ฐ€๋œ ํ›„ ๋ฐฐ์—ด์˜ ๊ธธ์ด(length) : ${fish.push('defense')}`); // ๋ฐฉ์–ด ์ถ”๊ฐ€
console.log(fish);
console.groupEnd();

// 4.unshift() : ์›๋ณธ ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ์•ž์— ์š”์†Œ ์ถ”๊ฐ€.
console.group('unshift()');
console.log(`์ถ”๊ฐ€๋œ ํ›„ ๋ฐฐ์—ด์˜ ๊ธธ์ด(length) : ${fish.unshift('shark')}`);
console.log(fish);
console.groupEnd();

// pop(), push()๋Š” array์˜ ๊ฐ€์žฅ ๋์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ , shift(), unshift()๋Š” ์•ž์— ์˜ํ–ฅ์„ ๋ฏธ์นจ.
// ๋”ฐ๋ผ์„œ shift, unshift๋Š” ๋ชจ๋“  ์ธ๋ฑ์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์นจ.

// 5.splice() : ์ •ํ•ด์ง„ ์œ„์น˜์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ. ์ถ”๊ฐ€์™€ ์ œ๊ฑฐ๋ฅผ ๋™์‹œ์—๋„ ๊ฐ€๋Šฅ.
// Array.splice(index number, number of items to remove, [items to add])
console.group('splice()')

// splice๋ฅผ ํ™œ์šฉํ•œ ์š”์†Œ ์ถ”๊ฐ€.
console.log('splice()๋ฅผ ํ™œ์šฉํ•œ ์š”์†Œ ์ถ”๊ฐ€');
console.log(fish.splice(1, 0, 'whale')); // ๋นˆ ๋ฐฐ์—ด, 1๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ 0์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์Œ.
// push()๋‚˜ unshift()์ฒ˜๋Ÿผ ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ์•ž, ๋’ค์—๋งŒ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์— ๋น„ํ•ด ๋” ์œ ์—ฐํ•จ.
console.log(fish);

// splice๋ฅผ ํ™œ์šฉํ•œ ์š”์†Œ ์ œ๊ฑฐ.
// ์„ธ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์˜€๋˜ 'whale'์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ์š”์†Œ์˜ ์ œ๊ฑฐ๊ฐ€ ๊ฐ€๋Šฅ.
console.log('splice()๋ฅผ ํ™œ์šฉํ•œ ์š”์†Œ ์ œ๊ฑฐ');
console.log(fish.splice(1, 2)); // splice(์ง€์ •๋œ ์ธ๋ฑ์Šค, ์ง€์ •๋œ ์ธ๋ฑ์Šค ์œ„์น˜๋ถ€ํ„ฐ ์‚ญ์ œํ•  ์š”์†Œ ์ˆ˜), ์ œ๊ฑฐํ•  ์š”์†Œ ๋ฐ˜ํ™˜.
console.log(fish);

// ์ถ”๊ฐ€์™€ ์ œ๊ฑฐ๋ฅผ ๋™์‹œ์— ํ•˜๋Š” ๋ฒ•.
console.log('splice()๋ฅผ ํ™œ์šฉํ•œ ์ถ”๊ฐ€์™€ ์ œ๊ฑฐ ๋™์‹œ ์ง„ํ–‰');
fish = ['shark', 'whale', 'koi', 'nimo(?)', 'defense'];
console.log(fish);
console.log(fish.splice(1, 2, 'sakana')); // 1๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ 2๊ฐœ์˜ ์š”์†Œ ์‚ญ์ œ ํ›„ 1๋ฒˆ ์ธ๋ฑ์Šค์— 'whale'์ถ”๊ฐ€.
console.log(fish);
console.groupEnd();

// 6. reverse() : ๋ฐฐ์—ด์˜ ์ˆœ์„œ ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ
console.group('reverse()');
console.log(fish.reverse()); // ์—ญ์ˆœ๋œ ๋ฐฐ์—ด
console.log(fish); // ์›๋ณธ ๋ณ€๊ฒฝ.
console.groupEnd();

// 7. fill() : ๋ชจ๋“  ์š”์†Œ๋“ค์„ ์ฃผ์–ด์ง„ ๊ฐ’์œผ๋กœ ์ „๋ถ€ ๋ฎ์–ด์”€.
console.group('fill()');
console.log('ํ˜„์žฌ fish array', fish);
console.log(fish.fill('the little mermaid'));
console.log(fish);

// ์‹œ์ž‘๊ณผ ๋ ์ง€์  ์ง€์ • ๊ฐ€๋Šฅ.
console.log(fish.fill('shark', 1)); // 1๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋๊นŒ์ง€
console.log(fish.fill('olaf', 1, 3)); // 1๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ 3 -1๊นŒ์ง€.
console.groupEnd();

// 8. sort() : ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
console.group('sort()');
fish = ['shark', 'whale', 'koi', 'nemo(?)', 'defense'];
console.log(fish.sort());
console.log(fish);

// ๊ฐ€์žฅ ์ฒซ ๋ฌธ์ž ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋ฉฐ, ๋Œ€๋ฌธ์ž๊ฐ€ ์†Œ๋ฌธ์ž๋ณด๋‹ค ์ •๋ ฌ ๊ธฐ์ค€์ด ์•ž์„ฌ.
console.log('๋ฌธ์ž ์ค‘์— ๋Œ€๋ฌธ์ž๊ฐ€ ๋ผ์–ด์žˆ์„ ๊ฒฝ์šฐ');
fish = ['Shark', 'whale', 'koi', 'nemo(?)', 'defense'];
console.log(fish.sort());
console.log(fish);

// ๋ฌธ์ž์— ์ˆซ์ž๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ์žˆ๋‹ค๋ฉด?
console.log('์š”์†Œ ๋ฌธ์ž ์•ž์— ์ˆซ์ž๊ฐ€ ๋ถ™์–ด์žˆ๋‹ค๋ฉด?');
fish = ['Shark', '2 whale', '53 koi', 'nemo(?)', 'defense'];
console.log(fish.sort());
console.log(fish);

// ์ˆซ์ž ์ •๋ ฌ
let numbers = [53, 42, 33, 63, 2, 87];
console.log(numbers.sort()); // ? why? sort()๋Š” ์ˆซ์ž์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•จ.

// ์ˆซ์ž๋ฅผ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธ์ž๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ๋น„๊ตํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•จ.
return a - b;
}
numbers.sort(sortNumerically); // ์ฝœ๋ฐฑํ•จ์ˆ˜
console.groupEnd();

 

 

 

 

// 1. concat() : ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฐฐ์—ด์„ ํ•ฉ์ณ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜.
console.group('concat()');
let disney = ['mickey', 'mini', 'stitch', 'donald duck'];
let ghibli = ['howl', 'totoro', 'mononoke', 'kiki'];

let animation = disney.concat(ghibli);
console.log(animation);

// ์›๋ณธ ๋ฐฐ์—ด์€ ๋ณ€ํ•จ์—†์Œ.
console.log(disney);
console.log(ghibli);
console.groupEnd();

// 2. join() : ๋ชจ๋“  ๋ฐฐ์—ด ์š”์†Œ๋“ค์„ string์œผ๋กœ ๋ณ€ํ™˜.
console.group('join()');
let fish = ['shark', 'whale', 'koi', 'nemo(?)', 'defense'];
let fishString = fish.join(); // join() ๋‚ด๋ถ€์— ๋ณ„๋„์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด , ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ์ณ์ง.
console.log(typeof fishString, fishString);

fishString = fish.join(' / ');
console.log(fishString);
console.groupEnd();

// 3. slice() : ์ผ๋ถ€ ์š”์†Œ๋“ค์„ ์ž˜๋ผ์„œ(๊ฐ€์ ธ๋‹ค๊ฐ€) ์ƒˆ๋กœ์šด ์š”์†Œ๋กœ ๋ฐ˜ํ™˜.
console.group('slice()');
console.log(fish);
let slicedFishArr = fish.slice(2); // 2๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋๊นŒ์ง€.
console.log(slicedFishArr);

slicedFishArr = fish.slice(2, 4); // 2๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ 4 -1 ๋ฒˆ ์ธ๋ฑ์Šค๊นŒ์ง€
console.log(slicedFishArr);
console.groupEnd();

// 4. indexOf() : ๋ฐฐ์—ด์—์„œ ์ฐพ๊ณ ์ž ํ•˜๋Š” ์š”์†Œ์˜ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค ์œ„์น˜๋งŒ ๋ฐ˜ํ™˜.(์ฐพ๊ณ ์ž ํ•˜๋Š” ์š”์†Œ๊ฐ€ ์ค‘๋ณต์ด์–ด๋„)
console.group('indexOf()');
fish = ['shark', 'whale', 'koi', 'whale', 'nemo']; // whale์ด 1, 3๋ฒˆ ์ธ๋ฑ์Šค์— ์ค‘๋ณต ์œ„์น˜.

console.log(fish);
console.log(`fish array์—์„œ 'whale'์˜ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค ์œ„์น˜ : ${fish.indexOf('whale')}`);

// ์ฐพ๊ณ ์ž ํ•˜๋Š” ์š”์†Œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ -1 ๋ฐ˜ํ™˜.
console.log(`ํ•œ์น˜๊ฐ€ ์žˆ๋‚˜์š”? ํ•œ์น˜๋Š” ์˜ค์ง•์–ด์—์š”! ${fish.indexOf('hanchi')}`);
console.groupEnd();

// 5. lastIndexOf() : ๋ฐฐ์—ด์—์„œ ์ฐพ๊ณ ์ž ํ•˜๋Š” ์š”์†Œ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜.
// ์ธ๋ฑ์‹ฑ์„ ๋’ค์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•จ.
console.group('lastIndexOf()');
console.log(fish);
console.log(`whale ์š”์†Œ๊ฐ€ ์œ„์น˜ํ•œ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค ์œ„์น˜ : ${fish.lastIndexOf('whale')}`);
console.groupEnd();

 

 

 

// forEach()
console.group('forEach()');
let fish = ['shark', 'whale', 'koi', 'nimo', 'defense'];

// fish.forEach(item => {
// console.log(item);
// })

fish.forEach((item, index) => console.log(item, index)); // function body๊ฐ€ ํ•œ ์ค„์ด๊ธฐ ๋•Œ๋ฌธ์— { } ์ƒ๋žต ๊ฐ€๋Šฅ.
console.groupEnd();

// map() : ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํŠน์ •ํ•œ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ ํ›„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๋ฐ˜ํ™˜.
console.group('map()');
let printFish = fish.map(aFish => {
console.log(aFish);
})

// fish ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ(๊ฐ ๋ฌผ๊ณ ๊ธฐ)๋“ค์„ ๋ณต์ˆ˜ํ™”์‹œํ‚ด
let fishes = fish.map(aFish => `${aFish}s`);
console.log(fishes);

// ์ˆซ์ž ๋ฐฐ์—ด์„ ์ œ๊ณฑํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๋ฐ˜ํ™˜
let numbers = [1, 2, 3, 4];
sqrtNumbers = numbers.map(number => number * number); // ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ๋ฐ˜ํ™˜๋œ ๊ฐ’๋“ค๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๋ฐ˜ํ™˜.
console.log(sqrtNumbers);
console.groupEnd();

// filter() : ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋“ค์„ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ํ†ต๊ณผํ•œ ์š”์†Œ๋“ค๋งŒ ๋ชจ์•„๋‹ค๊ฐ€ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜
console.group('filter()');
let snacks = ['cookie', 'smoothy', 'soup', 'mnm'];
let filteredList = snacks.filter(snack => snack[0] === 's');
console.log(filteredList);

// ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ์ง์ˆ˜๋งŒ ๋ฐ˜ํ™˜
// numbers = [1, 2, 3, 4]
const even = numbers.filter(number => number % 2 === 0);
console.log(even);
console.groupEnd();

// reduce() : ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•จ.
console.group('reduce()');
let someNumbers = [53, 42, 33, 15, 2, 7, 39]; // ๋ฌธ์ž์—ด, ๋ฐฐ์—ด ๋“ฑ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋„ ๋จ.
let sum = someNumbers.reduce((a, b) => a + b);
console.log(sum);
console.groupEnd();

// find() : ์ฃผ์–ด์ง„ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ.
console.group('find()');

let foods = ['meat', 'kimchi', 'asparagus', 'eggs'];
const vegetable = foods.find(food => ['kimchi', 'asparagus'].includes(food));

console.log(vegetable);
console.groupEnd();

// findIndex() : ์ฃผ์–ด์ง„ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฐ’์˜ ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜.
console.group('findIndex()');
const vegetableIndex = foods.findIndex(food => ['kimchi', 'asparagus'].includes(food));
console.log(vegetableIndex);

const drinkIndex = foods.findIndex(food => ['coffee', 'tea'].includes(food));
console.log(drinkIndex); // ์ฐพ๊ณ ์žํ•˜๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜.
console.groupEnd();

๋Œ“๊ธ€