const userObj = {
name: "chul su",
age: 20,
};
const copyUserObj = userObj;
userObj.age = 50;
console.log(userObj);
console.log(copyUserObj);
-> userObj.age = 50;가 어디에 있냐에 따라 결과가 바뀜
1.2 참조 자료형
1.3 동적으로 추가 -> 객체의 속성에 접근해서 값을 할당
1.4 동적으로 삭제 -> delete 키워드를 사용해서 특정 속성을 삭제
const userObj = {
name: "영희",
age: 20,
};
const userObj2 = new Object();
userObj2.name = "철수";
userObj2.age = 30;
console.log(userObj2);
1.5 리터럴 표기법(literal): 데이터를 정의하는 데 있어서 간편하게 데이터를 정의할 수 있는 방법
1.5.1 기본 자료형과 참조 자료형을 선언했던 방법 모두가 리터럴 표기법
// 함수 리터럴
const sum = () => {};
// 객체 리터럴
const userObj = {};
// 배열 리터럴
const userArr = [];
// 문자 리터럴 (표기법)
const userName = "철수";
// 불리언 리터럴
const isUser = true;
// 숫자 리터럴
const num = 10;
// null 리터럴
const inUser = null;
// symbol 리터럴 표기법
const uniqueKey = Symbol("a");
1.6 객체 속성에 접근하는 방법
const userObj = {
name: "철수",
age: 20,
"my gender": "male",
};
console.log(userObj.name);
console.log(userObj["age"]);
console.log(userObj["my gender"]);
// 객체 속성을 수정하는 방법
userObj.name = "영희";
console.log(userObj.name);
// 객체 속성을 삭제
delete userObj.age;
복잡한 객체
const userObj = {
name: "철수",
age: 20,
likes: ["사과", "바나나", "오렌지", { hate: ["당근", "오이", "호박"] }],
address: {
zipCode: [131, 231],
addr1: "seoul",
addr2: "101gh",
},
};
console.log(userObj.likes[1]);
console.log(userObj.address.zipCode);
console.log(userObj.likes[3].hate[0]);
console.log(userObj.address.zipCode[2]);
결과:
바나나
[ 131, 0 ]
당근
undefined
const userObj = {
name: "철수",
age: 20,
getName: function (...args) {
console.log(args);
},
};
userObj.getName("영희", 20);
1.7.1 for..in, Object.keys(), Object.values(), Object.entries()
const userObj = {
name: "철수",
age: 20,
"my gender": "male",
};
// for..in
for (let key in userObj) {
console.log(key, userObj[key]);
}
// Object.keys()
const keyArr = Object.keys(userObj);
for (let value of keysArr) {
console.log(userObj[value]);
}
Object.keys(userObj).forEach((key) => {
console.log(`${key}: ${userObj[key]}`;)
});
// Object.values() 객체 자료형을 다룰 수 있음
for (let value of Object.values(userObj)) {
console.log(value);
}
console.log(Object.values(userObj));
// Object.entries()
Object.entries(userObj).forEach(([key, value]) => {
console.log(`${key}: ${value}`);
});
1.8 객체 병합과 복사
const user = {
name: "철수",
};
const copyUser = user;
user.name = "영희";
console.log(user);
console.log(copyUser);
const user = {
name: "철수",
age: 20,
};
const copyUser = { ...user };
user.name = "영희";
console.log(user, copyUser);
주어진 객체에서 중복된 값을 제거하고, 그에 해당하는 키만 반환하는 함수를 작성하세요.
function removeDuplicateValues(obj) {
const count = {}; // 값의 갯수를 세는 객체
const result = {}; // 최종 결과 객체
// 값이 몇번 등장했는지 계산
Object.values(obj).forEach((value) => {
count[value] = (count[value] || 0) + 1;
});
Object.keys(obj).forEach((key) => {
if (count[obj[key]] === 1) {
result[key] = obj[key];
}
});
return result;
}
const obj = { a: 1, b: 2, c: 1, d: 3 };
console.log(removeDuplicateValues(obj)); // { b: 2, d: 3 }
const obj2 = { x: 5, y: 5, z: 10 };
console.log(removeDuplicateValues(obj2)); // { z: 10 }
const obj3 = { p: 1, q: 1, r: 1 };
console.log(removeDuplicateValues(obj3)); // {}
const obj4 = { m: 3, n: 4, o: 3 };
console.log(removeDuplicateValues(obj4)); // { n: 4 }
Object.values(obj).forEach((value) => {
count[value] = (count[value] || 0) + 1;
});
Object.values(obj)Object.values(obj)는 객체 obj의 모든 값을 배열로 만들어 주는 메서드 (values: JavaScript의 내장 메서드 이름)obj = { a: 1, b: 2, c: 1 }이라면, Object.values(obj)의 결과는 [1, 2, 1]이 됩니다..forEach((value) => { ... }).forEach는 배열의 각 요소에 대해 함수를 실행하는 메서드value는Object.values(obj)로 만든 배열의 각 요소를 가리킴value는 1이 되고,value는 2가 됨(value) => { ... } 부분은 각 값을 하나씩 가져와서 count 객체에 기록하는 역할을 함예시)
const arr = [1, 2, 3];
const [a, b, c] = arr;
console.log(a, b, c); // 1, 2, 3
function removeDuplicateValues(obj) {
const count = {}; // 값의 갯수를 세는 객체
const result = {}; // 최종 결과 객체
// 값이 몇 번 등장했는지 계산
Object.entries(obj).forEach(([_, value]) => {
count[value] = (count[value] || 0) + 1; // 값만 구조 분해 할당으로 가져옴 (key는 필요 없기 때문에 생략)
});
// 구조 분해 할당을 사용하여 obj의 키와 값 접근
Object.entries(obj).forEach(([key, value]) => {
if (count[value] === 1) {
result[key] = value;
}
});
return result;
}
💫
https://velog.io/@oimne/Javascript-%EA%B5%AC%EC%A1%B0-%EB%B6%84%ED%95%B4-%ED%95%A0%EB%8B%B9