Как проверить, содержит ли объект Javascript все ключи в массиве

Как проверить, содержит ли объект Javascript все ключи в массиве

5 мая 2022 г.

Иногда в Javascript у нас есть объект, которому нужно соответствовать определенному набору ключей. Это возможно благодаря принудительному использованию типов в TypeScript, но если мы хотим делать определенные вещи, если ключи не существуют, нам нужно использовать другой подход.


Например, предположим, что мы получаем следующий объект из массива, где firstName, lastName и age необходимы для операции, которую мы хотим завершить. Например;


```javascript


пусть объект = {


Имя: Джек,


Фамилия: Доу,


возраст: 123 года


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


Если мы получаем наши данные в obj из массива, мы можем быть уверены, что эти свойства будут предоставлены, но если API когда-либо изменится, мы можем столкнуться с проблемами. Разработчики API могут решить удалить «возраст» или любое другое свойство или, возможно, переименовать «firstName» в «first_name». В лучшем сценарии это приведет к тому, что ключи станут неопределенными. В худшем случае это может привести к ошибке и сбою нашего приложения.


Чтобы избежать этого, мы можем проверить, что у объекта есть ключи, которые нам требуются.


Как проверить, содержит ли объект все ключи в массиве


Для решения этой проблемы используется every(). every() — это метод массива, который проверяет каждый элемент в массиве и выполняет их логическую проверку. Если все возвращают истину, то метод every() возвращает истину.


Чтобы проверить, содержит ли объект все ключи в массиве, мы просто используем every() для массива всех ключей, которые мы хотим проверить. Таким образом, мы можем логически проверить существование каждого элемента, а затем сделать что-то еще, если он окажется ложным, что предотвратит появление каких-либо ошибок:


let requiredKeys = ['имя', 'фамилия', 'возраст']


пусть объект = {


Имя: Джек,


Фамилия: Доу,


возраст: 123 года


пусть checkAllKeys = requiredKeys.every((i) => obj.hasOwnProperty(i));


если (проверить все ключи) {


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


еще {


console.log('У API нет всех необходимых ключей. Пожалуйста, проверьте API и конфигурацию')


Здесь мы создаем массив наших необходимых ключейfirstName, lastName и age. Затем мы используем every() для просмотра каждого элемента в этом массиве. В every() мы запускаем функцию - здесь i - это текущий элемент, который проходит через цикл. Если obj имеет свойство i, тогда every() вернет true для этого конкретного элемента.


Если каждый элемент возвращает истину, то каждый возвращает истину в целом. В противном случае он вернет false. Таким образом, если checkAllKeys истинно, мы можем быть уверены, что у него есть все нужные нам ключи. В противном случае мы можем сделать что-то еще — например, консоль зарегистрирует ошибку.



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE