我有一组用户,如下所示。我试图通过查找users数组中管理员的索引并过滤掉这些索引来过滤掉管理员。
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并且过滤器功能无法正常工作。
有没有更简单的方法来写这个?
答案 0 :(得分:2)
您只需按属性IsAdmin进行过滤。
此外,您不需要将布尔值与true
或false
进行比较,只需在您的条件下使用它,即:
//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);
答案 1 :(得分:1)
var regularUsers = users.filter(function (user) {
return !user.IsAdmin;
});
如果您返回true,则过滤器会将用户添加到列表中
答案 2 :(得分:1)
findIndex
返回单个索引,而不是索引数组。无论如何,按索引过滤效率都非常低 - 只需直接使用谓词:
const admins = users.filter(user => user.IsAdmin);
const regularUsers = users.filter(user => !user.IsAdmin);