[英]compare two arrays if keys match with 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
}
}
現在我想比較所有的needed_permissions
是否在given_permissions
,以下划線的方式(沒有自己循環兩個數組並比較值)。 我看到了_.include
方法,但這會將數組與值進行比較。 如果所有權限都可用,我想返回true,否則返回false。 如果可能的話,我正在尋找一個不錯的單線電話。
原因是,即使用戶選擇取消擴展權限, FB.login
返回true。 所以我需要仔細檢查一下。
您可以使用_.difference
查看是否從您所需的權限中刪除給定的權限會留下任何_.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);
: _.isEqual(given_permissions, needed_permissions);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.