Polyfill для object.value для возврата правдивого утверждения - PullRequest
0 голосов
/ 27 ноября 2018

Моей первоначальной задачей было создать функцию, которая возвращала бы логическое значение, если мой объект данных содержал истинное значение.

Мне все равно, какое значение или ключ является правдивым, только то, что данные содержат истинное значение.

var fruits = { apples: false, oranges: true, bananas: true }

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

Работала следующая функция:

return Object.values(fruits).some(function(k) {
    return k;
});

Однако я не могу использовать Object.value и array.some из-за совместимости IE

Полифилл предложил использовать .map вместо того, чтобы получить каждое значение, однако следующим шагом является удаление .some() - я попытался использовать .filter(), но это возвращает меня к исходной проблеме, которая возвращает key, то естьправда не просто утверждение, что в базе данных существует истинное значение

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вам даже не нужен этот 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
0 голосов
/ 27 ноября 2018

Если вам нужен JavaScript в старом стиле, просто перейдите к простому циклу for:

function hasTruthy(fruits) {
    for (var key in fruits) {
        if (fruits.hasOwnProperty(key) && fruits[key]) return true;
    }
    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...