compare two arrays if keys match with underscore.js

时光怂恿深爱的人放手 提交于 2019-12-09 17:12:38

问题


I have an array with permissions from Facebook and an array of the permissions that the user shouldve given:

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
    }
}

Now I want to compare if all the needed_permissions are in given_permissions, in an underscore savvy way (without looping two arrays myself and compare values). I saw a _.include method, but this compares an array with a value. I want to return true if all the permissions are available and else a false. I was looking for a nice single line call if possible.

The reason for this is, that FB.login returns true even if the user chooses to cancel the extended permissions. So I need to doublecheck this.


回答1:


How about this?

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



回答2:


You could use _.difference to see if removing the given permissions from your required permissions leaves anything behind:

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

A nice side effect of this is that you get the missing permissions in diff in case you want to tell them what's wrong.




回答3:


Late answer but this works for me: _.isEqual(given_permissions, needed_permissions);



来源:https://stackoverflow.com/questions/11755313/compare-two-arrays-if-keys-match-with-underscore-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!