Javascript 如果找到具有正确属性的obj,则Js返回true
我必须确保如果找到具有以下属性的对象,那么它将返回true,否则返回false 但是,有什么建议吗?你可以向和查询Javascript 如果找到具有正确属性的obj,则Js返回true,javascript,arrays,object,Javascript,Arrays,Object,我必须确保如果找到具有以下属性的对象,那么它将返回true,否则返回false 但是,有什么建议吗?你可以向和查询 已检查功能(范围、操作){ 返回userScopes.some(o=>o.scope===scope&&o.actions.includes(action)); } 让userScopes=[{scope:'user',actions:['create','read','update']}]; console.log(选中(“用户”、“创建”);//真的 console.log(
已检查功能(范围、操作){
返回userScopes.some(o=>o.scope===scope&&o.actions.includes(action));
}
让userScopes=[{scope:'user',actions:['create','read','update']}];
console.log(选中(“用户”、“创建”);//真的
console.log(选中(“用户”、“创建”);//假的
console.log(选中(“用户”、“创建”);//假的
console.log(选中(“生成”、“创建”);//false
为什么要按位NOT~
?双布尔值不是代码>对于隐式转换来说已经足够了。一个按位不被抛出是很奇怪的,它将返回一个与您需要的完全不同的值。此外,您可以使用.some
返回布尔值。
let userScopes = [
{
scope: 'user',
actions: ['create', 'read', 'update'],
},
];
function checked(scope, actions) {
return !!~userScopes.find(
_scope =>
_scope.scope === scope && _scope.actions.lastIndexOf(actions) !== -1
);
}
console.log(checked("user","create"));//true
console.log(checked("users","create"));//false
console.log(checked("user","creat"));//false
console.log(checked("make","create"));//false