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

compare two arrays if keys match with underscore.js

本文关键字:数组 两个 比较 underscore js 匹配 如果      更新时间:2024-06-02

我有一个来自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
    }
}

现在,我想以一种精通下划线的方式(不需要自己循环两个数组并比较值)比较所有的needed_permissions是否都在given_permissions中。我看到了一个_.include方法,但它将数组与值进行比较。如果所有权限都可用,我想返回true,否则返回false。如果可能的话,我在找一个不错的单线电话。

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

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

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

这样做的一个很好的副作用是,如果你想告诉他们出了什么问题,你会在diff中获得丢失的权限。

这个怎么样?

_.all(needed_permissions, function(v){
    return _.include(given_permissions, v);
});

回答较晚,但这对我有效:_.isEqual(given_permissions, needed_permissions);