Как проверить, содержит ли объект 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
истинно, мы можем быть уверены, что у него есть все нужные нам ключи. В противном случае мы можем сделать что-то еще — например, консоль зарегистрирует ошибку.
Оригинал