Javascript 如果找到具有正确属性的obj,则Js返回true

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(

我必须确保如果找到具有以下属性的对象,那么它将返回true,否则返回false

但是,有什么建议吗?

你可以向和查询

已检查功能(范围、操作){
返回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