>웹 프론트엔드 >JS 튜토리얼 >JavaScript 개체에 중첩된 키가 있는지 어떻게 확실하게 확인할 수 있습니까?

JavaScript 개체에 중첩된 키가 있는지 어떻게 확실하게 확인할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-20 17:43:09376검색

How Can I Robustly Check for Nested Key Existence in JavaScript Objects?

중첩된 JavaScript 개체 키 존재 여부 테스트

중첩 속성이 있는 복잡한 JavaScript 개체를 처리할 때 중첩된 키의 존재를 확인하는 것이 어려울 수 있습니다. 다음은 중첩된 개체 키 존재를 테스트하기 위한 모범 사례에 대한 심층 탐색을 제공합니다.

질문에서 설명된 것처럼 전통적인 접근 방식은 중첩된 개체의 각 수준을 순차적으로 확인하는 것입니다.

if (test.level1 && test.level1.level2 && test.level1.level2.level3) {
    alert(test.level1.level2.level3);
}

그러나 이 접근 방식은 존재하지 않는 속성이 발견될 때 예외가 발생하기 쉽습니다.

해결책: 반복 존재 검사기

강건성을 향상시키기 위해 더 적합한 솔루션은 예외를 트리거하지 않고 중첩 속성의 존재를 반복적으로 확인하는 함수를 만드는 것입니다.

function checkNested(obj, ...args) {
  for (var i = 0; i < args.length; i++) {
    if (!obj || !obj.hasOwnProperty(args[i])) {
      return false;
    }
    obj = obj[args[i]];
  }
  return true;
}

이 함수는 모든 속성 이름의 수를 인수로 사용하고 모든 속성 이름이 중첩된 객체에 존재하면 true를 반환합니다. 예:

var test = {level1:{level2:{level3:'level3'}} };

checkNested(test, 'level1', 'level2', 'level3'); // true
checkNested(test, 'level1', 'level2', 'foo'); // false

ES6 솔루션

ES6은 존재 확인을 위한 더욱 간결하고 우아한 옵션을 제공합니다.

1. 꼬리 재귀 함수:

function checkNested(obj, level,  ...rest) {
  if (obj === undefined) return false
  if (rest.length == 0 &amp;&amp; obj.hasOwnProperty(level)) return true
  return checkNested(obj[level], ...rest)
}

2. 감소 기반 함수:

중첩 속성의 값을 검색하려면 다음 한 줄 함수를 사용할 수 있습니다.

function getNested(obj, ...args) {
  return args.reduce((obj, level) => obj &amp;&amp; obj[level], obj)
}

예:

console.log(getNested(test, 'level1', 'level2', 'level3')); // 'level3'

위 내용은 JavaScript 개체에 중첩된 키가 있는지 어떻게 확실하게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.