개체에 Javascript의 배열에 모든 키가 포함되어 있는지 확인

때때로 Javascript에는 특정 키 세트를 준수해야 하는 객체가 있습니다. 이것은 TypeScript 의 유형 적용을 통해 가능하지만 키가 존재하지 않는 경우 특정 작업을 수행하려면 다른 접근 방식을 취해야 합니다.

예를 들어, firstName , lastName 및 age 가 완료하려는 작업에 모두 필요한 배열에서 다음 개체를 수신한다고 가정합니다. 예를 들어

let obj = {
    firstName: Jack,
    lastName: Doe,
    age: 123
}

console.log(`${obj.firstName} ${obj.lastName} is ${obj.age}`);


배열에서 obj의 데이터를 수신하는 경우 해당 속성이 제공될 것이라고 신뢰할 수 있지만 API가 변경되면 문제에 직면할 수 있습니다. API 개발자는 age 또는 기타 속성을 제거하거나 firstName를 first_name로 이름을 바꿀 수 있습니다. 최상의 시나리오에서는 키가 정의되지 않게 됩니다. 최악의 경우 오류가 발생하고 애플리케이션이 중단될 수 있습니다.

이를 방지하기 위해 개체에 필요한 키가 있는지 확인할 수 있습니다.

개체에 배열의 모든 키가 포함되어 있는지 확인하는 방법



이 문제에 대한 솔루션은 every()를 사용합니다. every()는 배열의 모든 요소를 ​​검사하고 논리적 검사를 수행하는 배열 메서드입니다. 모두 true를 반환하면 every() 메서드가 true를 반환합니다.

객체가 배열의 모든 키를 포함하는지 확인하려면 확인하려는 모든 키의 배열에서 every()를 사용합니다. 그렇게 하면 각 요소가 존재하는지 논리적으로 확인할 수 있고 거짓이면 다른 작업을 수행하여 오류 발생을 방지할 수 있습니다.

let requiredKeys = [ 'firstName', 'lastName', 'age' ]
let obj = {
    firstName: Jack,
    lastName: Doe,
    age: 123
}

let checkAllKeys = requiredKeys.every((i) => obj.hasOwnProperty(i));

if(checkAllKeys) {
    console.log(`${obj.firstName} ${obj.lastName} is ${obj.age}`);
}
else {
    console.log('The API does not have all the keys required. Please check API and configuration')
}


여기에서 firstName , lastName 및 age 의 필수 키 배열을 만듭니다. 그런 다음 every()를 사용하여 해당 배열의 각 항목을 살펴봅니다. every() 에서 함수를 실행합니다. 여기서 i 는 반복되는 현재 항목입니다. obj에 i 속성이 있는 경우 every()는 해당 특정 항목에 대해 true를 반환합니다.

모든 항목이 true를 반환하면 every가 전체적으로 true를 반환합니다. 그렇지 않으면 false를 반환합니다. 따라서 checkAllKeys가 참이면 필요한 모든 키가 있다고 확신할 수 있습니다. 그렇지 않으면 콘솔 로그 오류와 같은 다른 작업을 수행할 수 있습니다.

좋은 웹페이지 즐겨찾기