1. slice()

number1 을 삭제하지 않은 상태로 값을 복사

let number1 = [1,2,3];
let number2 = number1.slice()

2. for( in)

빈 객체를 생성후 for in 문으로 각 프로퍼티들을 넣어준다

let user1 = {
	name : "suna",
	age : 28
}
    
let user2 = {};

for(let key in user1){
	user2[key] = user1[key];
}

3. function 

위의 코드를 함수로 만들면 아래와 같다

function clone(object){
    let user2 = {};

    for(let key in user1){
        user2[key] = user1[key];
    }
    return result;
}

let user1 = {
	name : "suna",
	age : 28
}

let user2 = clone(user1);

다만 아래의 경우 user1 에 객체가 있을 경우 

예를들어

user1 = {like : ["apple", "banana"]}

일 경우 주소값이 복사되는데 이는 아래의 코드로 수정하면 해결된다.

function clone(object){
	if(object === null || typeof object !== "object")
    	return object;
    let temp;
    if(Array.isArray(object)){
    	temp=[];
	}else{
    	temp={}
    }
    for (let key of Object.keys(object)){
    	temp[key] = cloneObject(object[key])
    }
    return temp;
}

let user1 = {
	name : "suna",
	age : 28
}

let user2 = clone(user1);

 

'develop > script' 카테고리의 다른 글

얕은복사 & 깊은복사  (0) 2023.10.19
배열의 특정 값 찾기 - find(), filter()  (0) 2023.10.19
변수 상수  (0) 2023.10.12
문자열 찾기  (0) 2023.10.12
Math메소드 외 소수점 처리 방법 _ toFixed()  (0) 2023.10.12

+ Recent posts