객체와 프로퍼티에 관련된 예제 모음집
Array 예제
in 을 사용하여 index 값 출력하기
const arr = [100, 200, 300, 400, 500, 600, 700];
for (let i in arr) {
console.log(i);
}
in을 사용하여 property 값 출력하기
for (let i in arr) {
console.log(i, arr[i]);
}
of를 사용하여 property 값 출력하기
for (let i of arr) {
console.log(i);
}
Object 예제
in을 사용하여 key값 출력하기
const obj = { name: "Kim", addr: "Yongsan", level: 1, role: 9, receive: false };
for (let i in obj) {
console.log(i);
}
in을 사용하여 property 값 출력하기
for (let i in obj) {
console.log(i, obj[i]);
}
of를 사용하여 property 값 출력하기
for (let v of Object.values(obj)) {
console.log("v:", v);
}
Object.defineProperty 사용하기
// level 을 entries에 나타나지 않도록 하기
console.log(Object.defineProperty(obj, "level", { enumerable: false }));
console.log("----------------------");
//role을 읽기전용으로 바꾸기
console.log(Object.defineProperty(obj, "role", { writable: false }));
Object => Array, Array=> Object
// 배열 -> 객체
data = [
["A", 10, 20],
["B", 30, 40],
["C", 50, 60, 70],
];
function makeObjectFromArray(arg) {
let result = {};
for (let [k, ...content] of arg) {
// result[k] = content;
result = { ...result, [k]: content }; //frontend
}
return result;
}
dataObj = makeObjectFromArray(data);
console.log(dataObj);
console.log("----------------------");
// 객체 -> 배열
function makeArrayFromObject(obj) {
let answer = [];
for (const [k, v] of Object.entries(dataObj)) {
//answer.push([k, ...v]);
answer = [...answer, [k, ...v]];
}
return answer;
}
console.log(makeArrayFromObject(obj));
Shallow copy , Deep copy
Shallow copy 예제
function shallowCopy(obj) {
// return {...obj}; // 정답!!
const ret = {};
for (const [k, v] of Object.entries(obj)) {
ret[k] = v;
}
return ret;
}
// 1) shallow copy
const kim = { nid: 3, nm: "Kim", addr: "Pusan" };
const newKim1 = shallowCopy(kim);
newKim1.addr = "Daegu";
console.log(kim.addr !== newKim1.addr); // true면 통과!
Deep copy 예제
function deepCopy(obj) {
const ret = {};
for (const [k, v] of Object.entries(obj)) {
// ret[k] = v !== null && typeof v === 'object' ? { ...v } : v;
if (v !== null && typeof v === "object") {
ret[k] = deepCopy(v);
} else {
ret[k] = v;
}
}
return ret;
}
const kim2 = {
nid: 3,
nm: "Kim",
addr: { city: "Pusan", road: "Haeundaero", zip: null },
};
const newKim2 = deepCopy(kim2);
newKim2.addr.city = "Daegu";
console.log(kim2.addr.city !== newKim2.addr.city); // true면 통과!
얕은 복사는 내부 객체를 공유하므로, 원본이 바뀔 수 있지만
깊은 복사는 내부까지 완전히 복사하므로, 원본 보호가 필요할 때는 깊은 복사를 해야된다.
'Dev > Javascript' 카테고리의 다른 글
| [JS] 배열 (Array) (1) | 2025.04.15 |
|---|---|
| [JS] this관련 예제 파헤치기 (0) | 2025.04.11 |
| [JS] 피보나치 수열 구현하기 (0) | 2025.04.10 |
| [JS] 클로저 (Closure) (0) | 2025.04.09 |
| [JS] 스코프 (2) | 2025.04.08 |
