如果数组中是否存在一个值,我该如何使用三元运算符对它进行正确和错误处理

问题描述 投票:-1回答:2

我想要一个具有某些属性的对象数组,并想要检查该对象是否具有特定的属性,而且我还希望该对象在数组中不具有该属性,然后如果存在则返回false,然后返回true,但是我从不想使用if else语句,我想用三元运算符来做,但是我在函数内的以下代码中有一些问题。

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));
javascript ternary-operator
2个回答
0
投票

这里有很多要解压的内容,但让我们从您的用户列表开始。

当存储列表时,通常最好使用Array,因为这将使您可以访问every之类的数组方法。

将“名称”移动到对象中使其完全符合数组语法,并且您仍然可以使用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));

0
投票

这里有很多要解压的内容,但让我们从您的用户列表开始。

当存储列表时,通常最好使用Array,因为这将使您可以访问every之类的数组方法。

将“名称”移动到对象中使其完全符合数组语法,并且您仍然可以使用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));
© www.soinside.com 2019 - 2024. All rights reserved.