중첩된 JavaScript 객체 키 존재 테스트
깊게 중첩된 객체 속성의 존재를 식별하는 것은 어려울 수 있습니다. 다중 레벨 키에 액세스하기 위해 점 표기법을 사용하려고 할 때 중간 레벨이 정의되지 않거나 null이면 오류가 발생할 수 있습니다.
기존 접근 방식:
일반적인 접근 방식 중 하나 조건문을 사용하여 중첩된 개체의 각 수준을 수동으로 확인하여 원하는 키에 액세스하기 전에 모든 수준이 존재하는지 확인하는 것입니다. 그러나 이 방법은 깊게 중첩된 객체의 경우 지루하고 오류가 발생하기 쉽습니다.
더 나은 옵션:
더 강력한 솔루션은 중첩된 키가 존재합니다. 이 함수는 개체와 일련의 레벨 이름을 인수로 사용하고 각 레벨을 반복하면서 해당 레벨이 존재하는지, 해당 값이 정의되지 않았거나 null이 아닌지 확인합니다.
함수 구현:
다음은 단계별 함수 구현입니다.
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; }
이 함수는 지정된 수준이 모두 충족되면 true를 반환합니다. 존재하고 그렇지 않으면 거짓입니다.
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) }
예시 사용법:
var test = {level1:{level2:{level3:'level3'}} }; checkNested(test, 'level1', 'level2', 'level3'); // true checkNested(test, 'level1', 'level2', 'foo'); // false
값 검색(ES6):
또한 중첩된 속성의 값을 검색하려면 다음 한 줄 함수를 사용할 수 있습니다. BE 사용:
function getNested(obj, ...args) { return args.reduce((obj, level) => obj && obj[level], obj) }
예:
console.log(getNested(test, 'level1', 'level2', 'level3')); // 'level3'
위 내용은 중첩된 JavaScript 개체 키 존재를 효율적으로 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!