Javascript 如果键与下划线.js匹配,则比较两个数组
我有一个从Facebook获得权限的数组和一个用户应该授予的权限数组:Javascript 如果键与下划线.js匹配,则比较两个数组,javascript,underscore.js,Javascript,Underscore.js,我有一个从Facebook获得权限的数组和一个用户应该授予的权限数组: window.FB.api('/me/permissions', function(perm){ if(perm){ var given_permissions = _.keys(perm['data'][0]; var needed_permissions = ["publish_stream", "email"]; //now
window.FB.api('/me/permissions', function(perm){
if(perm){
var given_permissions = _.keys(perm['data'][0];
var needed_permissions = ["publish_stream", "email"];
//now check if given permissions contains needed permissions
}
}
现在,我想比较一下所有所需的\u权限
是否都在给定的\u权限
,比较方式是使用下划线(而不是自己循环两个数组并比较值)。我看到了一个.include
方法,但它将数组与值进行比较。如果所有权限都可用,我想返回true,否则返回false。如果可能的话,我在找一个不错的单线电话
原因是,即使用户选择取消扩展权限,FB.login
也会返回true。所以我需要再次检查这个。这个怎么样
_.all(needed_permissions, function(v){
return _.include(given_permissions, v);
});
您可以使用查看从所需权限中删除给定权限是否会留下任何内容:
var diff = _(needed_permissions).difference(given_permissions)
if(diff.length > 0)
// Some permissions were not granted
这样做的一个很好的副作用是,您可以在
diff
中获得缺少的权限,以防您想告诉他们出了什么问题。迟来回答,但这对我来说很有效:.isEqual(给定权限,需要权限)代码>这也是一个很好的解决方案。我必须将另一个标记为答案,因为这基本上是我要求的,但我认为我会使用此解决方案,以便提供更好的反馈。我不同意,并认为将此作为您接受的答案会更有用。差异正是您所要求的(“如果键与下划线.js匹配,则比较两个数组”-我认为其余的都是猜测),并且确实是您“接受”的答案,因为您使用了它!只是想帮助其他人看看这个。我想不是每个人都会通过接受的答案。作为一个解决方案,被接受的答案是相当糟糕的,因为当下划线提供一个函数来完成“开箱即用”时,它不会添加任何内容。