queryPermissions.js 996 B

12345678910111213141516171819202122232425262728
  1. /*
  2. list = 查询的数组
  3. tier = 层级
  4. need = 需要查询的数据
  5. */
  6. let getObjectKey = (object, value) => {
  7. return Object.keys(object).find(key => object[key] == value);
  8. };
  9. let name = ['modules', 'apps'];
  10. function query(list, tier, need) {
  11. if (!list) return;
  12. //排除不是数组 在深入查找一级
  13. if (list.constructor !== Array) return query(list[Object.keys(list).filter((key) => name.includes(key))], tier, need);
  14. //拿到当前层的数组 如果不是最后一层 继续查找
  15. let arr = list.find(v => getObjectKey(v, tier[0]));
  16. if (tier.length > 1) return query(arr, tier.splice(1, 1), need);
  17. // 到达最后一层查询需要查询的权限
  18. if (arr.constructor !== Array) arr = arr[Object.keys(arr).filter((key) => name.includes(key))]
  19. let perArr = [];
  20. for (let i = 0; i < arr.length; i++) {
  21. if (need.includes(arr[i].systemmodulename)) perArr.push(arr[i])
  22. }
  23. return perArr;
  24. };
  25. module.exports.query = query;