Ответ 1
Вы можете использовать Array.some
:
var hasFalseKeys = Object.keys(ob).some(k => !ob[k]);
Вопрос:
Я ищу простое решение, чтобы проверить, есть ли какие-либо значения ключа false
в объекте.
У меня есть объект с несколькими уникальными ключами, однако они содержат только логические значения (true
или false
)
var ob = { stack: true,
overflow: true,
website: true
};
Я знаю, что могу получить количество ключей в объекте со следующей строкой:
Object.keys(ob).length // returns 3
Существует ли встроенный метод для проверки, является ли какое-либо значение ключа ложным, без необходимости циклически проходить через каждый ключ в объекте?
Решение:
Чтобы проверить, есть ли какие-либо ключи - используйте Array.prototype.some()
.
// to check any keys are false
Object.keys(ob).some(k => !ob[k]); // returns false
Чтобы проверить, все ли ключи - используйте Array.prototype.every()
.
// to check if all keys are false
Object.keys(ob).every(k => !ob[k]); // returns false
Вы можете использовать Array.some
:
var hasFalseKeys = Object.keys(ob).some(k => !ob[k]);
Вот как бы я это сделал:
Object.values(ob).includes(false); // ECMAScript 7
// OR
Object.values(ob).indexOf(false) >= 0; // Before ECMAScript 7
Вы можете создать функцию стрелки isAnyKeyValueFalse
, чтобы повторно использовать ее в своем приложении, используя Object.keys() и Array.prototype.find().
Код:
const ob = {
stack: true,
overflow: true,
website: true
};
const isAnyKeyValueFalse = o => !!Object.keys(o).find(k => !o[k]);
console.log(isAnyKeyValueFalse(ob));