如果键与underscore.js匹配,则比较两个数组

Jar*_*ish 7 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 check if given permissions contains needed permissions
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想比较,如果所有的needed_permissions都在given_permissions,在下划线精明的方式(不包括循环两个数组我和比较值).我看到了一个_.include方法,但这会将数组与值进行比较.如果所有权限都可用,我想返回true,否则返回false.如果可能的话,我正在寻找一个不错的单线电话.

原因是,FB.login即使用户选择取消扩展权限,也会返回true.所以我需要仔细检查一下.

mu *_*ort 18

您可以使用_.difference以查看是否从您所需的权限中删除给定的权限会留下任何后果:

var diff = _(needed_permissions).difference(given_permissions)
if(diff.length > 0)
    // Some permissions were not granted
Run Code Online (Sandbox Code Playgroud)

这样做的一个很好的副作用是你得到了缺少的权限diff,以防你想告诉他们什么是错的.


xia*_*owl 5

这个怎么样?

_.all(needed_permissions, function(v){
    return _.include(given_permissions, v);
});
Run Code Online (Sandbox Code Playgroud)