>웹 프론트엔드 >JS 튜토리얼 >JavaScript 개체에 중첩된 키가 있는지 안전하게 확인하려면 어떻게 해야 합니까?

JavaScript 개체에 중첩된 키가 있는지 안전하게 확인하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-20 06:29:13444검색

How Can I Safely Check for the Existence of Nested Keys in JavaScript Objects?

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

중첩된 JavaScript 개체 내에 속성이 있는지 확인하는 것은 특히 잠재적인 문제에 직면할 때 어려운 일입니다. null 또는 정의되지 않은 값. 이 문제를 해결하려면 위험하고 오류가 발생하기 쉬운 직접 속성 액세스에 의존하는 대신 단계별 접근 방식을 사용하는 것이 좋습니다.

실행 가능한 솔루션 중 하나에는 여러 중첩 수준의 존재를 테스트하는 맞춤형 기능이 포함됩니다. checkNested라는 우아한 이름의 이 함수는 대상 객체를 첫 번째 인수로 받아들이고 그 뒤에 예상되는 일련의 중첩 속성 이름이 옵니다. 각 속성의 존재 여부를 체계적으로 확인하여 모두 발견되면 true를 반환하고 그렇지 않으면 false를 반환합니다.

function checkNested(obj, /* level1, level2, ... levelN */) {
  var args = Array.prototype.slice.call(arguments, 1);

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

예를 들어 개체가 주어지면:

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

예상 항목으로 checkNested를 호출합니다. level은 예상 결과를 반환합니다:

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

ES6 최적화

ES6 기능을 활용하면 이 기능을 더욱 간소화하여 간결하고 효율적인 구현이 가능합니다. 재귀 및 최종 호출 최적화를 결합하여 간결하면서도 강력한 솔루션을 만듭니다.

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

또한, 단순히 존재 여부를 테스트하는 대신 중첩된 속성의 값을 검색하는 것이 목표라면 더 간단한 접근 방식은 다음과 같습니다. 사용 가능:

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

const test = {
  level1: {
    level2: {
      level3: 'level3',
    },
  },
};
console.log(getNested(test, 'level1', 'level2', 'level3')); // 'level3'
console.log(getNested(test, 'level1', 'level2', 'level3', 'length')); // 6
console.log(getNested(test, 'level1', 'level2', 'foo')); // undefined
console.log(getNested(test, 'a', 'b')); // undefined

이러한 기술을 활용하면 중첩된 JavaScript 개체의 복잡성을 자신있게 탐색하여 견고성과 안정성을 보장할 수 있습니다. 코드입니다.

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

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