본문 바로가기
to be 개발자

javascript object 복사 복제 추가 반환 속성 필터링 메소드 / .assign() .create() .entries() keys()

by 아셀acell 2024. 7. 9.
반응형



Object.assign()
한 개 이상의 객체에서 다른 객체로 값을 복사하는 메소드
assign(*) * 부분에 여러개의 객체를 넣을 시 그 각 개체의 모든 값들이 복사됩니다.


단, 해당 객체에서 겹치는 key 값이 있을 경우, 맨 마지막 객체의 값으로 복사되며, 함께 나열된 객체에서도 본인 뒤에 오는 객체의 값과 겹치는 값이 있을 경우, 뒤의 객체의 값으로 변경됩니다.


즉, a = Object.assign(c,d,e) 로 설정했을 때, c 가 d 와 e와 겹치는 key 가 있다면 e의 해당 key 값의 value 값이 a, c, d 로 들어갑니다.


또 c 가 d와는 겹치지 않지만 e와 겹치는 key 가 있다면 e의 해당 key 값의 value 값이 a, c 로 들어갑니다.


이어서 c가 e와는 겹치지 않지만 d와 겹치는 key 가 있다면 d의 해당 key 값의 value 값이 a, c로 들어갑니다.


그런데 assign() 은 단순 자바스크립트 파일에서는 제한없이 쓰이지만, vue 등 다른 언어, 다른 확장자 파일 안에서 사용될 때에 예외적으로 객체 안의 객체 등 depth 가 깊어지면 깊은 depth  내부 값은 가져와지지 않을 수 있습니다.


이럴때는 복사하려는 a 객체를 문자열로 변환했다가 다시 파싱하여 b 객체에 넣어주면 잃어버리는 value 없이 잘 가져올 수 있습니다. 단, 이는 가장 깊은 복사 방식이라서 가장 많은 메모리를 차지하며, 처리 속도도 늦을 수 있습니다.


b = JSON.parse(JSON.stringify(a))




Object.entries()
[key, value] 이런식으로 주어진 객체의 모든 key, value 를 각각 한 배열로 묶어 배열 안에서 나열하는 메소드
Object.entries(a).length 이런식으로 객체의 개수를 구할 수 있습니다.
또 Object.entries(a)[1] 이런식으로 N번째 객체의 key, value 값을 확인할 수 있습니다.





Object.fromEntries()
entries() 의 반대되는 개념의 메소드로, entries() 의 결과값으로 만들어지는 형태의 배열을 반대로 각 배열 첫째 항목은 key 값으로, 둘째 항목은 value 값으로 만드는 메소드입니다.


Object.freeze()
객체를 동결합니다. freeze() 를 한번 선언하고 나면 다른 코드로 해당 속성을 삭제하거나 변경할 수 없기 때문에 변경되어서는 안되는 객체를 선언할 때 사용합니다.


Object.hasOwn(객체, key)
지정된 객체가 지정된 key 속성을 가지고 있는지, 아니면 존재하지 않는지 여부를 확인할 때 사용합니다.





Object.keys()
주어진 객체의 모든 열거 가능한 문자열 key 속성의 이름을 나열한 배열을 반환합니다.


Object.is(a, b)
a, b 두 객체가 같은 객체인지 비교합니다. 단, 객체가 다 같아도 순서가 다르다면 다르다고 나옵니다.


순서는 상관없이 두 객체가 같은지 비교하려면 Object.keys() 메소드를 사용하여 key 배열을 추출한 뒤 해당 배열을 돌려 각 키 값에 해당하는 객체의 값이 동일한지 반복 비교가 필요합니다.


Object.isExtensible()
객체의 확장이 허용되는지 여부를 확인합니다. isFrozen() 의 반대입니다.


Object.isFrozen()
객체가 동결되었는지 확인합니다. isExtensible() 의 반대입니다.


Object.preventExtensions()
객체의 확장을 방지합니다. 기존 값을 변경할 수는 있으나 새 key value 값을 추가할 수는 없습니다.





Object.values()
주어진 객체의 모든 열거 가능한 문자열 속성에 대응하는 값을 포함하는 배열을 반환 합니다. 동일한 값이 있어도 겹치지 않고 나열하고, 배열인 값이 있다면 배열 안에 배열로서 나열됩니다. 배열이 풀리지는 않습니다.








728x90
반응형
LIST

댓글