Как пропустить элемент при использовании каждого - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть объект:

obj = {name:null, lastName:null, scores:[]}

Мне нужно выполнить итерацию и проверить, все ли поля равны нулю, кроме поля оценки.Мне нужно пропустить это.

Я использовал

  Object.values(obj).every(x=> x===null) 

до того, как были добавлены оценки, но я не уверен, как пропустить это поле сейчас.Потому что независимо от того, является ли массив показателей пустым или нет, если все остальные поля пусты, мне нужно вернуть true.

Любое предложение приветствуется

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Если вы можете использовать ES7 (а прокладки доступны, если вы не можете), вы можете использовать это, чтобы избежать повторения объекта дважды:

Object.entries(obj).every(([k, v]) => v === null || k === 'scores');

Object.entries работаетв каждом текущем основном браузере, кроме MSIE.

Другое преимущество Object.entries состоит в том, что, поскольку обратному вызову передаются и ключ, и значение, нет необходимости обращаться к obj в обратном вызове, что, в свою очередь,вынуждает использовать встроенную функцию, формирующую замыкание над obj.entries() вполне возможно сделать обратный вызов отдельной функцией, что было бы особенно важно, если бы код становился намного длиннее, или если эта логика обратного вызова требовалась в нескольких местах.

0 голосов
/ 26 февраля 2019

Вы можете filter ключи, которые вы не хотите проверять:

Object.keys(obj)
    .filter(k => k !== "scores")
    .every(k => obj[k] === null);

Можно объединить два условия внутри каждого (просто верните true для ключей, которые вы делаетене хочу проверять) но я решил держать логику отдельно.

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