์๋ฐ ์คํฌ๋ฆฝํธ ํจ์
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()๋ ์ซ์์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํจ.
// ์ซ์๋ฅผ ์ ๋ ฌํ๊ธฐ ์ํด์๋ ์ธ์๊ฐ์ ๋น๊ตํ๋ ๋น๊ตํจ์๋ฅผ ์์ฑํด์ผํจ.
const sortNumerically = (a, b) => { // how ? https://medium.com/@winwardo/the-principle-of-least-astonishment-and-javascripts-sort-e98a734a30c9
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();
'๊ฐ๋ฐ ์ง์, ์คํฌ๋ฆฝํธ > JavaScript, TS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฝ๋ฐฑ (Call back) ํจ์ (0) | 2023.11.27 |
---|---|
ํจ์ ํํ์ (0) | 2023.11.27 |
forEach ๊ตฌ๋ฌธ (0) | 2023.11.27 |
JS ๋์ ํ์ vs ์ ์ ํ์ (1) | 2023.11.26 |
console.dir(); (1) | 2023.11.24 |
๋๊ธ