js 메소드
//객체 생성자
function Item(title, price) {
//this = {};
this.title = title;
this.price = price;
this.showPrice = function () {
console.log(`가격은 ${price}원 입니다.`);
};
//return this;
}
//new 중요 (위에 함수는 리턴이 없기 때문에 undefind만 나옴 생성자 함수는 new로 붙여야함)
const item1 = new Item("인형", 3000);
const item2 = Item("가방", 6000);
const item3 = new Item("지갑", 7000);
console.log(item1, item2, item3);
item3.showPrice();
let n = "name";
let a = "age";
//변수 안에있는 값을 []로 사용가능
//[] 안에서 계산식도 가능
const user = {
[n]: "mike",
[a]: 30,
[1 + 4]: 5,
};
console.log(user);
//key와 value를 받아와서 객체로 사용하는법(어떤게 key가될지 모를때)
function makeObj(key, val) {
return {
[key]: val,
};
}
const obj = makeObj("나이", 33);
console.log(obj);
//Object.assign
const user = {
name: "Mike",
age: 30,
};
// 원래 것은 안바뀌게 복사
const user2 = Object.assign({}, user);
user2.name = "tom";
user2.age = 22;
console.log(user);
console.log(user2);
//Object.entries
// keys 키만, values 내용만, entries 둘다 key끼리, value끼리 배열
const result = Object.entries(user);
console.log(result);
//Object.fromEntries
//배열을 객체로
let arr = [
["mon", "월"],
["tue", "화"],
];
const arrresult = Object.fromEntries(arr);
console.log(arrresult);
let arr = [1, 3, 4, 5, 6];
// find 는 첫번째 true만 찾고 findIndex는 그곳의 index를 나타내줌
// (중요) filter는 해당하는 걸 모두 찾아내주고 배열로 반환
// reverse는 역순으로 정렬
const result = arr.filter(function (item) {
return item % 2 === 0;
});
console.log(result);
// map 함수를 받아 특정 기능을 시행하고 새로운 배열을 반환
let userList = [
{ name: "mike", age: 30 },
{ name: "Jane", age: 27 },
{ name: "Tom", age: 10 },
];
let newUserList = userList.map((user, index) => {
return Object.assign({}, user, {
id: index + 1,
isAdults: user.age > 19,
});
});
console.log(newUserList);
//sort 순서대로 정렬 (10이상의 수를 정렬하려면 함수사용해야함)
function arr(number) {
if (number[1] === String) {
console.log(number.sort());
} else {
function fn(a, b) {
return a - b;
}
number.sort(fn);
console.log(number);
}
}
arr([9, 1, 8, 2, 11, 12]);
arr(["가", "다", "나"]);
//forEach
let num = [1, 2, 3, 4, 5];
let result = 0;
num.forEach((num) => {
result += num;
});
console.log(result);
//reduce
let array = [1, 2, 3, 4, 5];
const redu = array.reduce((prev, cur) => {
return prev + cur;
}, 0);
console.log(redu);
//나머지 매개변수 (...변수) 전달받은 모든 수를 전달 배열 메소드 사용가능
function add(...numbers) {
let result = 0;
numbers.forEach((num) => (result += num));
console.log(numbers);
console.log(result);
}
add(1, 2, 3);
add(1, 2, 3, 4, 5, 6, 7, 8);
//나머지 매개변수 예제 (나머지 매개변수는 항상 마지막에 있어야함)
function User(name, age, ...skills) {
this.name = name;
this.age = age;
this.skills = skills;
}
const user1 = new User("mike", 30, "css");
const user2 = new User("Tom", 30, "js", "css");
const user3 = new User("meeee", 30, "english", "css", "css", "css");
console.log(user1);
console.log(user2);
console.log(user3);
//구조 분해 할당
let [x, y] = [1, 2];
console.log(x); //1
console.log(y); //2
let users = ["mike", "tom", "jane"];
let [user1, user2, user3, user4, user5 = "기본값"] = users;
console.log(user1); //mike
console.log(user2); //tom
console.log(user3); //jane
console.log(user4); //값이 없어서 undefined
console.log(user5); //기본값 셋팅
//구조 분해 할당으로 간단하게 값 교환 가능
let a = 1;
let b = 2;
console.log(a); //1
console.log(b); //2
[a, b] = [b, a];
console.log(a); //2
console.log(b); //1
//객체 구조 분해
let user = { name: "mike", age: 30 };
let { name, age } = user; //let { age, name } = user; (순서를 바꿔도 같음)
let { name: userName, age: userAge, gender, hobby = "기본값" } = user; //이렇게 새로운 변수로 할당 가능
//위 코드는 아래와 같다
// let name = user.name;
// let age = user.age;
console.log(name); //mike
console.log(age); //age
console.log(userName); //mike
console.log(userAge); //age
console.log(gender); //값이 없어서 undefined
console.log(hobby); //undefined일때 hobby = '기본값' 이렇게 할당 가능 기본값은 undefined일때만 할당
//전개구문
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
// arr2.reverse().forEach((num) => {
// arr1.unshift(num);
// });
arr1 = [...arr2, ...arr1];
console.log(arr1);