Polyfill для object.value для возврата правдивого утверждения
Моей первоначальной задачей было создать функцию, которая возвращала бы логическое значение, если мой объект данных содержал истинное значение.
Мне все равно, какое значение или ключ является правдивым, только то, что данные содержат истинное значение.
var fruits = { apples: false, oranges: true, bananas: true }
При переборе этого объекта возврат должен быть true
потому что есть true
значения внутри.
Следующая функция работала:
return Object.values(fruits).some(function(k) {
return k;
});
Однако я не могу использовать Object.value
ни array.some
из-за совместимости IE
Предлагаемый Polyfill должен использовать .map
вместо этого, чтобы получить каждое значение, но следующим шагом является удаление .some()
- Я пытался использовать .filter()
но это возвращает меня к первоначальной проблеме, которая возвращает key
это правда, а не просто утверждение, что в базе данных существует истинная ценность
2 ответа
Если вам нужен старый стиль JavaScript, просто перейдите на простой for
цикл:
function hasTruthy(fruits) {
for (var key in fruits) {
if (fruits.hasOwnProperty(key) && fruits[key]) return true;
}
return false;
}
Тебе это даже не нужно hasOwnProperty
проверять.
var fruits = {
apples: false,
oranges: true,
bananas: true
}
function hasTruthyValue(obj) {
for (let key in obj) {
if (obj[key]) {
return true;
}
}
}
console.log(hasTruthyValue(fruits)); //true