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

Другие вопросы по тегам