как я могу true и false значение с тернарным оператором, если это значение присутствует или нет в массиве - PullRequest
0 голосов
/ 07 ноября 2019

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

let users = {
  Alan: {
    age: 27,
    online: true
  },
  Jeff: {
    age: 32,
    online: true
  },
  Sarah: {
    age: 48,
    online: true
  },
  Ryan: {
    age: 19,
    online: true
  }
};

function isEveryoneHere(obj) {

  return (users.Alan) ? true : (users.Jeff) ? true : (users.Ryan) ? true : (users.Sarah) ? true : false;

}

console.log(isEveryoneHere(users));

1 Ответ

2 голосов
/ 07 ноября 2019

Здесь много чего нужно распаковать, но давайте начнем с вашего списка пользователей.

Когда вы сохраняете список, обычно лучше использовать Array , так как это даст вамдоступ к методам массива, таким как каждые .

Перемещение «имени» в объекты делает его хорошо соответствующим синтаксису массива, и вы можете использовать find для получения записейв любом случае по имени.

Во-вторых, теперь, когда у нас есть методы массива, троичный подход является избыточным. Мы просто спрашиваем, есть ли у каждого объекта в списке свойство true online. Это значительно повышает читабельность вашего кода и избавляет нас от постоянного переосмысления существующих решений.

Вот пример приведенных выше пунктов:

var users = [{
  name: 'Alan',
  age: 27,
  online: true
}, {
  name: 'Jeff',
  age: 32,
  online: true
}, {
  name: 'Sarah',
  age: 48,
  online: true
}, {
  name: 'Ryan',
  age: 19,
  online: true
}];

function isEveryoneHere(users) {
  return users.every(function(user) {
    return user.online;
  });
}
console.log(isEveryoneHere(users));
...