중첩된 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!