
^ ์ฃผ๋ง์๋ฐ ๋๋๊ณ ์คํฐ๋ํ๋ ๋ ์ ๋ฒ ๋ฉ์ ธ์(์์์๊ณผ์)
๋ฌ๋ฆฌ๊ธฐ๋ฐ ์ค์ต 2๋ฒ์งธ ๋ฌธ์ ๋ ์ข ์ด๋ ค์ ๋ค.
๋ค๋ค ํ๋ผ๋ฝ ํ๊ณ ๊ฐ๋๋ฐ ๋๋ ์์๋ณต์ฌ, ๊น์๋ณต์ฌ๋ฅผ ์ดํดํ๊ณ ํ๊ธฐ ๋ง๋งํ๊ณ (ํ๊ณ ๋๋๊น ๊ฐ๋จํจ;;) ๋ฐฐ์ด๋ฉ์๋๋ฅผ ์ฝ๋์นดํ ํ๋ฉด์ ์ข ์ต์ํด์ก๋ค๊ณ ์๊ฐํ๋๋ฐ ์๋๋ผ๋๊ฑธ ๊นจ๋ฌ์๋ค.๐ฅ
ํํฐ๋์ด ํด์ฃผ์ ํด์ค์ธ์
๋ณด๋ฉด์ ๋ด๊ฐ ์ด ๋ต๊ณผ ๋น๊ตํด๋ดค๊ณ ๋ณต์ตํ๋ฉด์ ์ ๋๋ก ์๊ณ ์๋ก์ด๊ฒ๋ ์ ๋ฆฌํ๊ณ ๋์ด๊ฐ๋ ค๊ณ TIL ์ฃผ์ ๋ก ์ ํด๋ฐ!
์์ ๋ณต์ฌ, ๊น์ ๋ณต์ฌ ์์
// ์์
const arr1 = [1, 2, 3];
const arr2 = arr1;
arr2[0] = 10;
console.log(arr1);
console.log(arr1 === arr2);
์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ ํธ๋ ๋ฌธ์ ์๋ค.
const obj1 = { a: 1, b: 2, c: 3 };
/* ๋ฌธ์ 1-1) obj1์ ์์ ๋ณต์ฌํ๋ ์ฝ๋๋ก ์์ฑํด์ฃผ์ธ์ */
const obj2 = obj1
/* ๋ฌธ์ 1-2) obj2์ d๋ฅผ ์ถ๊ฐํ๋ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ธ์. d๋ 4์ ๊ฐ์ ๊ฐ์ง๋๋ค. */
obj2.d = 4;
/* ๋ฌธ์ 1-3) ํด๋น๊ฐ obj1, obj2์ ๊ฐ์ ์ถ๋ ฅํด์ฃผ์ธ์ */
console.log(obj1); // { a: 1, b: 2, c: 3, d: 4 }
console.log(obj2); // { a: 1, b: 2, c: 3, d: 4 }
๐ฉ๐ปโ๐ป ๋ฐ๋ก ํ ๋นํด๋ฒ๋ฆฌ๋ฉด ์์๋ณต์ฌ๊ฐ ๋๊ณ ํ ๋นํ ๊ฐ์ฒด์๋ ์ฐธ์กฐํ๋ '์ฃผ์'๊ฐ ๋ค์ด์๋ค.
์์๋ณต์ฌ๋ฅผ ํ ํ ์์ฑ๊ฐ์ ๋ฐ๊ฟ๋ฒ๋ฆฌ๋ฉด ๋์ผํ ์ฃผ์๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ ์๋ณธ ์์ฑ๋ ๋ฐ๋๊ฒ ๋๋ค.
// ์์
function deepCopy(o) {
var result = {};
if (typeof o === "object" && o !== null)
for (i in o) result[i] = deepCopy(o[i]);
else result = o;
return result;
}
๊น์๋ณต์ฌ๋ฅผ ํ๋ ๋ฐฉ์์ ์์์ฝ๋ ๋ง๊ณ 2๊ฐ์ง๊ฐ ๋ ์๋ค.
var arr2 = deepCopy(arr1);
var arr2 = JSON.parse(JSON.stringify(arr1));
var arr2 = structuredClone(arr1);
JSON์ ํ์ฉํ ๋ฐฉ์structuredClone ์ฌ์ฉ์ธ๊ฐ์ง ์ค์์ ์ํฉ๊ณผ ํธ์์ ๋ฐ๋ผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด๋ฒ์๋ ๋ง์ง๋ง structuredClone์ ์ฌ์ฉํด์ ํ์ด๋ณด์๋ค.
/* ๋ฌธ์ 2-1) arr2์ 0๋ฒ์งธ ๊ฐ์ฒด์ c๋ผ๋ ์์ฑ์ ์ถ๊ฐํ๊ณ ๊ฐ์ 3์ผ๋ก ํ ๋นํด์ฃผ์ธ์ */
arr2[0].c = 3;
/* arr1์ ์ถ๋ ฅํด์ฃผ์ธ์ */ [{a:1}, {b:2}]
/* arr2๋ฅผ ์ถ๋ ฅํด์ฃผ์ธ์ */ [{a:1, c: 3}, {b:2}]
๐ฉ๐ปโ๐ป ์ฒ์์ 2-1 ๋ฌธ์ ๋ฅผ ํ ๋ ๋ต์ arr2[0] = {c=3}; ๋ก ์ ์ด์ ์ถ๋ ฅ๊ฐ์ด [{ c: 3 }, { b: 2 }] ๋ก ๋์๋ฒ๋ ธ๋ค.
์ดํด๊ฐ ๋์ง ์์์ ๋ฌธ์ ๋ฅผ ๊ผผ๊ผผํ๊ฒ ๋ค์ ์ฝ์ด๋ณด์๋๋ ์ดํด๊ฐ ๋์๋ค.
๋ด๊ฐ ์ด ์ฝ๋๋ arr2์ ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค ์์ฑ์ ์์ ๋ฐ๊ฟ๋ฒ๋ฆฌ๋ ์ฝ๋์ด๊ณ ,
๋ต์์ arr2[0].c๋ก ์์ฑ๋ง! ์ถ๊ฐํ ๋ค์ ๊ทธ ๊ฐ์ด 3์ ๊ฐ์ง๋๋ก ๋ง๋ค์ด์ฃผ์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ด ๋ต์ด ํ๋ฆฌ๊ฒ ๋์จ ๊ฒ์ด๋ค.
const student = {
name: "yuno",
age: "30",
skill: ["javascript"],
address: {
city: "seoul"
}
};
// 3-1) ์์ ๋ณต์ฌ๋ฅผ ์ํํ์ฌ shallowCopy๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์.
const shallowCopy = student;
// 3-2) ๊น์ ๋ณต์ฌ๋ฅผ ์ํํ์ฌ deepCopy๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์.
// const deepCopy = JSON.parse(JSON.stringify(student))
const deepCopy = structuredClone(student);
// 3-3) ์์ ๋ณต์ฌ ๊ฐ์ฒด์ ์๋ณธ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ์ฌ ์ถ๋ ฅํด์ฃผ์ธ์
console.log("1. ์๋ณธ ๊ฐ์ฒด(student)์ ์์ ๋ณต์ฌ ๊ฐ์ฒด๊ฐ ๊ฐ์๊น์?", true);
console.log(student === shallowCopy);
// 3-4) ์์ ๋ณต์ฌ ๊ฐ์ฒด์ address์ ์๋ณธ ๊ฐ์ฒด์ address๋ฅผ ๋น๊ตํ์ฌ ์ถ๋ ฅํด์ฃผ์ธ์.
console.log("2. ์๋ณธ ๊ฐ์ฒด์ address์ ์์ ๋ณต์ฌ ๊ฐ์ฒด์ address๊ฐ ๊ฐ์๊น์?", true);
console.log(student.address === shallowCopy.address);
// 3-5) ๊น์ ๋ณต์ฌ ๊ฐ์ฒด์ ์๋ณธ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ์ฌ ์ถ๋ ฅํด์ฃผ์ธ์.
console.log("3. ์๋ณธ ๊ฐ์ฒด(student)์ ๊น์ ๋ณต์ฌ ๊ฐ์ฒด๊ฐ ๊ฐ์๊น์?", false);
console.log(student === deepCopy);
// 3-6) ๊น์ ๋ณต์ฌ ๊ฐ์ฒด์ address์ ์๋ณธ ๊ฐ์ฒด์ address๋ฅผ ๋น๊ตํ์ฌ ์ถ๋ ฅํด์ฃผ์ธ์.
console.log("4. ์๋ณธ ๊ฐ์ฒด์ address์ ๊น์ ๋ณต์ฌ ๊ฐ์ฒด์ address๊ฐ ๊ฐ์๊น์?", false);
console.log(student.address === deepCopy.address);
๐ฉ๐ปโ๐ป 3๋ฒ์ ์์๋ณต์ฌ์ ๊น์๋ณต์ฌ๋ฅผ ๋ชจ๋ ๋ค๋ฃจ๋ ๋ฌธ์ ์๋ค.
์์๋ณต์ฌ๋ฅผ ํ ๊ฒฝ์ฐ 1depth๊น์ง๋ง ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ ์ค์ฒฉ๋๊ฐ์ฒด์ ์์ฑ๊น์ง ์ ๊ทผํด์ ์์
ํ๋ ค๋ฉด ๊น์๋ณต์ฌ๋ฅผ ํด์ค์ผํ๋ค.
// 3-7) ์์ ๋ณต์ฌํ ๊ฐ์ฒด์ ๋ฐฐ์ด์์ ๋ณ๊ฒฝ javascript -> js์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์
shallowCopy.skill[0] = "js";
// ๊น์ ๋ณต์ฌ ๊ฐ์ฒด์ ์ฃผ์ ์์ฑ์ ๋ณ๊ฒฝํ์ธ์ (์: city๋ฅผ "busan"์ผ๋ก ๋ณ๊ฒฝ)
deepCopy.address.city = "busan"
๐ฉ๐ปโ๐ป ๊ฐ์ฒด ์ฃผ์์ ์์ฑ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๊น์๋ณต์ฌ๋ฅผ ์ฌ์ฉํด์ผํ๋ฏ๋ก deepCopy๋ก ์ฌ์ฉํด์ ์์ฑ์ ๋ณ๊ฒฝํ๊ณ , skill์ ๊ฒฝ์ฐ๋ 1depth์ ์๋ ๊ฐ์ฒด์ด๋ฏ๋ก ์์๋ณต์ฌ๋ก ๋ฐ๋ก ์์ฑ ๊ฐ์ ๋ณ๊ฒฝํด์ฃผ์๋ค.
๊ฒฐ๊ณผํ์ธ
//
1. ์๋ณธ ๊ฐ์ฒด(student): {
name: 'yuno',
age: '30',
skill: [ 'js' ],
address: { city: 'seoul' }
}
///
2. ์์ ๋ณต์ฌ๋ ๊ฐ์ฒด(shallowCopy): {
name: 'yuno',
age: '30',
skill: [ 'js' ],
address: { city: 'seoul' }
}
///
3. ๊น์ ๋ณต์ฌ๋ ๊ฐ์ฒด(deepCopy): {
name: 'yuno',
age: '30',
skill: [ 'javascript' ],
address: { city: 'busan' }
}
๋ฐฐ์ด ๋ฉ์๋ ์์
4๋ฒ๋ฌธ์ (๋ผ๊ณ ์ฐ๊ณ ์๋ผ๋ฌธ์ ๊ฐ 10๊ฐ๊ฐ ๋์๋..ใ
)๋ ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ํ์ฉํ๋ ๋ฌธ์ ์๋ค.
์ฐ์ ๋ฌธ์ ์ ํ์ด๋ฅผ ์ญ ์ ๊ณ ํ๋ฉด์ ์๊ฒ๋ ๋ถ๋ถ๋ง ํ๋จ์ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค.
// 1. ๋ฐฐ์ด API map ํ์ฉ
// arr์ ๊ฐ ์์์ 10์ ๊ณฑํ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด์ฃผ์ธ์.
// ๊ฒฐ๊ณผ ๊ฐ: [100, 200, 300]์ ์ถ๋ ฅํด์ฃผ์ธ์.
var arr = [10, 20, 30]
let arr2 = arr.map(num => num * 10);
// console.log(arr2);
//2. ๋ฐฐ์ด API filter ํ์ฉ
// 5์ ๋ฐฐ์๋ฅผ ์ฐพ์ ๋ฐํํด์ฃผ์ธ์.
// ๊ฒฐ๊ณผ๊ฐ [10]์ ์ถ๋ ฅํด์ฃผ์ธ์.
var arr = [10, 22, 33]
let arrFive = arr.filter(num => num % 5 === 0);
// console.log(arrFive);
// 3. ํฌ๊ธฐ๊ฐ 15๋ณด๋ค ํฐ ์ซ์์ ๊ฐ์ ๋ฐํํ์ฌ ์ถ๋ ฅํด์ฃผ์ธ์
// ์ถ๋ ฅ๊ฐ [20, 25]
const numbers = [5, 10, 15, 20, 25];
let newNumbers = numbers.filter((num) => num > 15);
// console.log(newNumbers);
// 4. ๋ฌธ์์ด ๊ธธ์ด๊ฐ 4 ์ด์์ธ ๊ฐ์ ๋ฐํํ์ฌ ์ถ๋ ฅํด์ฃผ์ธ์
var arr = ["banana", "kiwi", "mango", "strawberry", "lime", "orange", "plum", "cherry"];
let arrFour = arr.filter(str => str.length > 4);
// console.log(arrFour);
// 5. ์์์ ๋ฌธ์์ด ๊ธธ์ด๊ฐ ํ์์ธ ์์๋ง ๋ฐํํ์ฌ ์ถ๋ ฅํด์ฃผ์ธ์
var arr = ["banana", "kiwi", "mango", "strawberry", "lime", "orange", "plum", "cherry"];
let arrOdd = arr.filter(odd => odd.length % 2 === 1);
// console.log(arrOdd)
// 6. ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํด์ฃผ์ธ์(์ ์ ์ปค์ง)
var arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3];
let sortArr = arr.sort((a, b) => a - b);
// console.log(sortArr);
// 7. age๋ฅผ ์ด์ฉํ์ฌ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ ์ถ๋ ฅํด์ฃผ์ธ์
var student = [
{ name: "์ดใ
ใ
", age: 25 },
{ name: "์ ใ
ใ
", age: 30 },
{ name: "๊นใ
ใ
", age: 12312 }
];
let ageSort = student.sort((a, b) => b.age - a.age);
// console.log(ageSort);
// 8. ๊ฐ์ฒด ๋ฐฐ์ด์์ name ์์ฑ์ด null์ธ ๊ฐ์ฒด๊ฐ ์๋์ง ํ๋ณ์ ํ์ธํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ฐํ๊ฐ์ ์ถ๋ ฅํด์ฃผ์ธ์
var student = [
{ id: 1, name: "์ดใ
ใ
" },
{ id: 2, name: null },
{ id: 3, name: "๊นใ
ใ
" }
];
let nullStudent = student.filter((student) => {
return student.name !== null;
});
let nullStudent2 = student.some((student) => student.name === null);
// console.log(nullStudent); // ๊ฐ์ ๋ฐํ
// console.log(nullStudent2); // ๋ถ๋ฆฌ์ธ ๋ฐํ
// 9. ๋ฌธ์์ด ๊ธธ์ด๊ฐ 5๋ฅผ ์ด๊ณผํ๋ ์์๊ฐ ์๋์ง ๊ฒ์ฌํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ฐํ๊ฐ์ ์ถ๋ ฅํด์ฃผ์ธ์.
var arr = ["banana", "kiwi", "mango", "strawberry", "lime", "orange", "plum", "cherry"];
let arrFive2 = arr.some((fruit) => fruit.length > 5);
// console.log(arrFive2); // true
// 10. kiwi ์ manggo ์ฌ์ด์ ์๋ก์ด ์์๋ฅผ ์ฝ์
ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ๋ ฅํด์ฃผ์ธ์
var arr = ["banana", "kiwi", "mango"];
arr.splice(2, 0, "apple");
// console.log(arr);
// let newFruits = arr.splice(2, 0, "apple");
// console.log(newFruits); ๋น๋ฐฐ์ด
// 11. ๋ฐฐ์ด์ ์์๊ฐ ํ๋๋ผ๋ ์๋์ง ํ๋ณํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ฐํ๊ฐ์ ์ถ๋ ฅํด์ฃผ์ธ์
var arr = [1, 5, -3, 10, 0, 8];
let arrMinus = arr.some(num => num < 0);
// console.log(arr.some(num => num < 0)); // true
// 12. ๋ชจ๋ ์ซ์๊ฐ ์์์ธ์ง ํ๋ณํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ฐํ๊ฐ์ ์ถ๋ ฅํด์ฃผ์ธ์
var arr = [1, 5, -3, 10, 0, 8];
let allArrMinus = arr.every((allNum) => allNum < 0);
console.log(allArrMinus); // false
map(), filter()
๐ฉ๐ปโ๐ป ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ map(), filter() ๋ฅผ ๋จผ์ ์ ๋ฆฌํด๋ณด์
map() : ๋ฐฐ์ด ์์๋ฅผ ๊ทธ๋๋ก! ๊ฐ๊ณต๋ง ํ ๋! => ๋ฐฐ์ด์ ๊ธธ์ด ๋์ผํจfilter() : ์๋ณธ ๋ฐฐ์ด์์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฑฐ๋ฅด๋ ์์
์ ํ ๋! => ๋ฐฐ์ด์ ๊ธธ์ด ๋ฌ๋ผ์ง์ด ๋ ๋ฉ์๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋๋ฐ ํฌ์ธํธ๋ { } ์ค๊ดํธ์ด๋ค.
arr.map((num) => num * 10);
์ด๋ ๊ฒ ์ ์์ ๋๋ return์ด ์๋ต๋์ด ์๊ธฐ ๋๋ฌธ์ ์ํ๋ ๊ฐ์ ์ถ๋ ฅํ ์ ์๋ค.
arr.map((num) => {
return num*10;
});
ํ์ง๋ง ์ค๊ดํธ๋ฅผ ์ ์์ ๊ฒฝ์ฐ์๋ return ์ ์์ฑํด์ผ๋ง undefined์ด ๋์ค๋ ์ค์๋ฅผ ๋ง์ ์ ์๋ค.
โญ๏ธ ์ฝ๋ฐฑ ์์์ ์ค๊ดํธ๋ฅผ ์ฐ๋ฉด ๋ฌด์กฐ๊ฑด return์ ์จ์ผํ๋ค๋ ๊ฑธ ๋ฐ๋์ ๊ธฐ์ตํ์!
sort()
๐ฉ๐ปโ๐ป ๋ค์์ sort() ์ ๋ ฌ ๋ฉ์๋์ด๋ค.
์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋ ๋ง์ด ์ฌ์ฉํ๋ ๋ฉ์๋์ธ๋ฐ
let sort1 = arr.sort((a, b) => a - b);
let sort2 = student.sort((a, b) => b.age - a.age);
์ฒซ๋ฒ์งธ ์ค(sort1)์ ๋ง์ด ์จ๋ด์ ์ต์ํ์ง๋ง ์๋์ค(sort2)์ ์ด๋ฒ์ ์ฒ์ ์จ๋ดค๊ณ ๋๋ฌด ์ ๊ธฐํ๊ณ ์ฌ๋ฏธ์์๋ค.
let sort = student.sort((a, b) => a[key] - b[key]);
์ด๋ ๊ฒ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด ์์ ์๋ ๊ฐ์ฒด๋ ์ ๋ ฌ์ด ๊ฐ๋ฅํด์ง๋ค. ๋จ ์ซ์์ผ ๊ฒฝ์ฐ์๋ง!! ๊ฐ๋ฅํ๋ค.
sort๋ฉ์๋๋ ์ซ์๋ฅผ ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ๋ง์ฝ '๋ฌธ์์ด(String)'์ ์ ๋ ฌํ๋ค๋ฉด NaN์ด ์ถ๋ ฅ๋๋ฏ๋ก ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผํ๋ค.
items.sort(function (a, b) {
if (a.name > b.name) {
return 1;
} else if (a.name < b.name) {
return -1;
} else {
return 0;
}
})
// ์ผํญ์ฐ์ฐ์๋ก ๊ฐ๋จํ๊ฒ ์ฐ๊ธฐ
items.sort((a, b) => {
return a.name > b.name ? 1 : a.name < b.name ? -1 : 0;
})
a-b ํ๋ ๋ฐฉ์์ด ์์๊ฐ ๋์ค๋ฉด ์ค๋ฆ์ฐจ์ ์ด์ฉ๊ณ ํ๊ฑฐ๋๊น ๊ทธ ๋ฐฉ์์ ํ์ฉํ๊ฑฐ๋ผ๊ณ ๋ณผ ์ ์๋ค.
// ํด๋น ๋ฌธ์ ๋ฅผ forEach๋ก ๋ณ๊ฒฝํ์ฌ ํ์ด์ฃผ์ธ์
let arr = [10, 20, 30]
let newArr = [];
arr.forEach((num, index) => {
newArr.push(num * 10);
})
console.log(newArr);
// ๊ฒฐ๊ณผ ๊ฐ: [100, 200, 300] ์ถ๋ ฅํด์ฃผ์ธ์
// 5์ ๋ฐฐ์๋ฅผ ์ฐพ์ ๋ฐํํ์ธ์
let arr2 = [10, 22, 33]
let newArr2 = [];
arr2.forEach(num => {
if (num % 5 === 0) {
newArr2.push(num);
}
})
console.log(newArr2)
// ๊ฒฐ๊ณผ๊ฐ [10]
๐ฉ๐ปโ๐ป ์ฒ์์ ์ด ๋ฌธ์ ๋ฅผ ํ ๋ ์ฝ์์ ๋ต์ ๊ตฌํ์ง๋ง ์๊ตฌํ๋ ํํ์ ์ถ๋ ฅ๊ฐ์ ๊ตฌํ ์ ์๊ฑฐ๋ undefined๊ฐ ๋์์๋ค.
forEach๋ ๋ฐํ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ป์ผ๋ ค๋ฉด ์ ์ฝ๋์์์ฒ๋ผ let newArr = []; ๊ฐ์ ๋น ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๊ทธ ์์ push ํ๋ ๋ฑ์ ๋ฐฉ์์ผ๋ก ๊ฐ์ ๋ฃ์ด์ฃผ์ด์ผํ๋ค.
// ์ฃผ์ด์ง ํ์ ๊ฐ์ฒด ๋ฐฐ์ด์์ ๊ฐ ํ์์ ํ๊ท ์ ์๋ฅผ ๊ณ์ฐํ ํ, ํ๊ท ์ด 80์ ์ด์์ธ ํ์์ ์ด๋ฆ๋ง ํํฐ๋งํ์ฌ ์ถ๋ ฅํด์ฃผ์ธ์.
// ๊ฐ๋ฅํ๋ค๋ฉด ๋ฉ์๋ ์ฒด์ด๋์ผ๋ก ํ์ด์ฃผ์ธ์.
const students = [
{ name: "์ดใ
ใ
", scores: [80, 90] },
{ name: "๊นใ
ใ
", scores: [90, 95] },
{ name: "์ ใ
ใ
", scores: [75, 70] },
];
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ธ์
// ์์ ์ถ๋ ฅ: ["์ดใ
ใ
", "๊นใ
ใ
"]
์ฐ์ ์ฌ๊ธฐ์ ์ฌ์ฉํ ๋ฉ์๋๋ถํฐ ์ ์ด๋ณด๋ฉด filter() ๋ก ํ๊ท 80 ์ด์์ธ ํ์์ ๊ฑฐ๋ฅด๊ณ , reduce()๋ก ํ๊ท ์ ๊ตฌํด์ผํ๋ค.
๋ฐฐ์ด ๋ฉ์๋์ ๋ฝ์ธ๋๋ ์๋ก ์ฒด์ด๋์ด ๊ฐ๋ฅํ๊ฑด๋ฐ ์ด๋ฅผ ํ์ฉํด์ ์ญ์ฑ ์จ๋ณด๋๊ฒ ๋ฏธ์
์ด๋ค.
let studentArr = students.filter((student) => {
let avg = student.scores.reduce((prev, curr) => prev + curr, 0) / student.scores.length;
return avg >= 80;
}).map((avgName) => avgName.name);
console.log(studentArr);
๐ฉ๐ปโ๐ป ์์ ์๋ ์ฝ๋์นดํ๋ฅผ ํ๋ฉด์ reduce ๋ฉ์๋์ ๋ํด ๊ณต๋ถํ ์ ์๋๋ฐ ํผ์ ๊ณต๋ถํ์ ๋๋ณด๋ค ํ๋ํ๋ ์ค๋ช ์ ๋ค์ผ๋ฉด์ ๊ณผ์ ์ ๋ณด๋๊น ๋๋ฌด ์ฝ๊ฒ ์ดํด๊ฐ ๋์๋ค.
reduce() ๋ฉ์๋
array.reduce((prev, curr) => prev + curr, 0)
์ฝ๊ฐ.. ์.. ๋์ ํด์~ ๋ํด์ค๋ค~~ ์ด๋ฐ๊ฑฐ๋ผ์ prev,curr ๋ ๊ฐ์ ๋งค๊ฐ๋ณ์๊ฐ ํ์ํ๋ค.
๋์ ์๋ 0์ ์ด๊ธฐ๊ฐ์ธ๋ฐ ๋งค์ ์ ์ค!!์ฒ์์ prev์ ํด๋นํ๋ ๊ฐ์ด ์์ผ๋๊น 0์ผ๋ก ์ ํด์ค๊ฑฐ๋ค.
0์ผ๋ก ์ ํด์ฃผ์ง ์์ผ๋ฉด ๋๋ํ ๋ฏ ๋ง์ถฉ์ง์กํ ์ปดํจํฐ๋ ์!! prev ๊ฐ์ด ์์๋! ์๋ฌ! ์๋ฌ! ์ด๋ด๊ฑฐ๋ค...
function avg(arr) {
let total = 0;
for (let i = 0; i < arr, length; i++) {
total += arr[i];
}
return total / arr.length;
}
๋ฐ๋ณต๋ฌธ์ผ๋ก ํ๋ฉด ์ด๋ ๊ฒ ํ ์ ์์ง๋ง..! ๋ฌธ์ ์์ ์๊ตฌํ๋๊ฑด ๋ฉ์๋ ์ฒด์ด๋์ด์์ผ๋ ์ฐธ๊ณ ๋ก ์์๋๊ธฐ!
์ถ์ฒ