[JS] 객체 탐색 비교

Dev.Jo·2021년 3월 22일
0

JS

목록 보기
3/7

예제

let testObj = {
  a:"1"
  b:"2"
  c:"3"
  d:"4"
}

Q) testObjvalue="2"를 가지고 있는지 확인하는 방법을 알아보겠습니다

방법

  • Object.entries
  • for..in
  • Object.keys

Object.entries

객체 자체의 enumerable 속성 [key, value] 쌍의 배열을 반환합니다

for( const [key, value] of Object.entries(testObj)) {
  if( value === "2") return true;
}
return false;

for...in

for (const property in testObj){
  if ( testObj[property] === "2") return true
}
return false

배열에서는 for...in을 사용하면 안됩니다 - by MDN

이유)

반복되는 순서는 구현에 따라 다르기 때문에, 배열의 반복이 일관된 순서로 요소를 방문하지 못할 수도 있습니다

Example by stackoverflow

var a = [];
a[5] = 5;   // Perfectly legal JavaScript that resizes the array.

for (var i = 0; i < a.length; i++) {
    console.log(a[i]);
}

/* Will display:
   undefined
   undefined
   undefined
   undefined
   undefined
   5
*/
---------------------------------
var a = [];
a[5] = 5;
for (var x in a) {
    // Shows only the explicitly set index of "5", and ignores 0-4
  
    console.log(x);
}

/* Will display:
   5
*/

Object.values

Object의 모든 value를 가진 배열을 반환합니다

return Object.values(testObj).includes("2");

마찬가지로 모든 key를 찾고 싶을 때는 Object.keys를 사용하면 됩니다

퍼포먼스 비교

Object.entries가 가장 우수한 결과를 보여줍니다

profile
소프트웨어 엔지니어, 프론트엔드 개발자

0개의 댓글