我有一些用户,如下所示。我试图通过在用户数组中查找管理员的索引并筛选出这些索引来筛选出管理员。

var users = [
  {name: "Jeff", IsAdmin: false},
  {name: "Jonah", IsAdmin: true},
  {name: "Jonathan", IsAdmin: true}
];

var admins = users.findIndex(function (user) {
     user.IsAdmin == true;
});

var regularUsers = users.filter(function (value, index) {
    return admins.indexOf(index) == -1;
});


上面的例程不起作用,因为管理员返回null且filter函数无法正常工作。

有没有更简单的方法可以写这个?

最佳答案

您只需要按属性IsAdmin进行过滤。

此外,您无需将布尔值与truefalse进行比较,只需在您的条件下使用它即可,即:

//You don't need that because `IsAdmin` is a boolean attribute.
return user.IsAdmin == true

//So, use that attribute directly.
return user.IsAdmin




var users = [
  {name: "Jeff", IsAdmin: false},
  {name: "Jonah", IsAdmin: true},
  {name: "Jonathan", IsAdmin: true}
];

var admins = users.findIndex(function (user) {
     return !user.IsAdmin;
});
console.log(admins);

var regularUsers = users.filter(function (user) {
    return !user.IsAdmin;
});

console.log(regularUsers);

09-07 02:38