paint-brush
How To Check if a Javascript Object Contains all Keys in Arrayby@smpnjn
2,486 reads
2,486 reads

How To Check if a Javascript Object Contains all Keys in Array

by Johnny SimpsonMay 5th, 2022
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

FATExFi: MATIC Pre-Launch FAIR Token Swap. The DAO has approved two options for current/future holders of FATE Harmony DAO Members. The term “fair” is used because there are no VC’s or massive, insider allocations being given special advantages. All users are treated equally, you are the FATExDAO “angel” investors. The details regarding the above statements will be published in the updated gitbook/DAO documentation.

Company Mentioned

Mention Thumbnail
featured image - How To Check if a Javascript Object Contains all Keys in Array
Johnny Simpson HackerNoon profile picture

Sometimes in Javascript we have an object which we need to conform to a specific set of keys. This is possible through type enforcement in TypeScript, but if we want to do certain things if the keys don't exist, then we have to take a different approach.


For example, suppose we are receiving the following object from an array, where firstName, lastName, and age are all needed for an operation we want to complete. For example;


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

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


If we are receiving our data in obj from an array, we could trust that those properties will be provided, but if the API ever changes we may face issues. The developers of the API may decide to remove age or any other property, or maybe rename firstName to first_name. In the best scenario, this will lead to keys becoming undefined. In the worst, it may result in an error and crash our application.


To avoid this, we can check the object has the keys we require.

How to Check if Object Contains all Keys in Array

The solution to this problem uses every(). every() is an array method which checks every element in an array, and performs a logical check on them. If all return true, then the every() method returns true.


To check if an object contains all keys in an array, we just use every() on an array of all the keys we want to check. That way we can logically check each element exists, and then do something else if it's false, preventing us from encountering any errors:


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')
}


Here we create an array of our required keys - firstName, lastName, and age. We then use every() to go through each item in that array. In every(), we run a function - here, i is the the current item being looped through. If obj has the property i, then every() will return true for that specific item.


If every item returns true, then every returns true overall. Otherwise it will return false. As such, if checkAllKeys is true, we can be sure it has all the keys we need. Otherwise, we can do something else - like console log an error.