Как проверить, что каждое поле объекта существует более изощренным способом? - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть объект, чтобы проверить, существует ли каждое поле.

 { _id: 5e907e4047dd2f290ea4d23b,
  username: 'gg',
  email: 'gg',
  isSensei: false,
  location: 3,
  location2: 0,
  age: 7,
  country: 'AI',
  introduce: 'Nice to meet you' }

if (obj.username.hasOwnProperty(username) && obj.username.hasOwnProperty(email) && ... ) {
   // do something
}

Если часть выглядит очень длинной и некрасивой. Можно ли проверить, существуют ли каждое поле или нет в одной строке кода?

Ответы [ 2 ]

3 голосов
/ 18 апреля 2020

Сначала вы можете получить с помощью Object.keys() все ключи от вашего объекта. Затем с помощью комбинаций .every() и .includes() вы можете определить, отражены ли все ключи в вашем объекте, что вы ищете, например, из массива fieldsToCheck создан для лучшего представления.

Попробуйте сделать следующее:

const obj =  { _id: '5e907e4047dd2f290ea4d23b', username: 'gg', email: 'gg', isSensei: false, location: 3, location2: 0, age: 7, country: 'AI', introduce: 'Nice to meet you' };

const fieldsToCheck = ['email', 'username', 'location'];
const keys = Object.keys(obj);

const hasAll = fieldsToCheck.every(e => keys.includes(e));

console.log(hasAll);

См. Основную часть в документации для .every():

Метод every() проверяет, все ли элементы в массиве проходят тест, реализованный предоставленной функцией. Возвращает логическое значение.

Так что в конце вы можете использовать следующее:

if (hasAll) {
   // your code
}

Надеюсь, это поможет!

0 голосов
/ 18 апреля 2020

Вы можете сделать это, используя Object.keys() и Array.prototype.every().

const data = {
  _id: '5e907e4047dd2f290ea4d23b',
  username: 'gg',
  email: 'gg',
  isSensei: false,
  location: 3,
  location2: 0,
  age: 7,
  country: 'AI',
  introduce: 'Nice to meet you'
};


const keys = Object.keys(data);
const isExistsEveryKeys = keys.every(key => data[key] !== undefined); // This will check every keys existance, If all the keys exists then it returns true, and returns false otherwise.

console.log(isExistsEveryKeys);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...