如果键与underscore.js匹配,请比较两个数组
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
查看从所需权限中删除给定权限是否会留下任何东西:
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);
相关文章:
- 如何使用 node.js 比较两个 json 数组
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 访问$.ajax()函数中的两个不同数组
- 正在更新mongod中两个对象内部的数组
- 如何使用javascript合并两个对象数组
- 比较包含多个值对的两个JavaScript数组
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- 检查来自不同数组的两个元素的一个属性是否相等
- 如何在javascript中合并两个对象数组
- 如何获取数组第一个元素的范围
- 捕获一组两个特殊字符之间的所有内容,但允许角色在正文中出现一次
- 使用具有不同属性数的两个或多个着色器时发生冲突
- JSON数组-多个有效答案的可能性
- 编写一个函数,将数组(第一个参数)拆分为大小(第二个参数)的长度组,并将它们作为多维数组返回
- 如何添加值到javascript数组两次或更多
- 使用.shift()更新数组'5个元素
- JavaScript 过滤器数组多个条件
- 如果数组第一个元素中的字符串包含数组第二个元素中字符串的所有字母,则返回true
- Javascript序列化数组多个表单问题
- 编写一个函数,将数组(第一个参数)拆分为大小相同的组(第二个参数),并将其作为多维数组返回