У меня есть список разрешений:
const all_permissions = [
{
permission_id: 1,
permission_name: "Getting User List",
permission_method: "GET",
permission_url: /^/panel/user$/
},
{
permission_id: 2,
permission_name: "Getting User Info",
permission_method: "GET",
permission_url: /^/panel/user/[0-9]+$/
},
{
permission_id: 3,
permission_name: "Testing",
permission_method: "GET",
permission_url: /^/panel/test/[a-z]+$/
}
]
const my_permissions = [1,2]
Как отфильтровать all_permissions, чтобы они соответствовали только идентификатору внутри my_permissions? Спасибо
JS использует camelCase, а не змеиный регистр для имен переменных.
Я использую camelCase только для именования функций. Это мои предпочтения :)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте filter и includes следующим образом:
const all_permissions = [{permission_id:1,permission_name:"Getting User List",permission_method:"GET",permission_url:/^/panel/user$/},{permission_id:2,permission_name:"Getting User Info",permission_method:"GET",permission_url:/^/panel/user/[0-9]+$/},{permission_id:3,permission_name:"Testing",permission_method:"GET",permission_url:/^/panel/test/[a-z]+$/}];
const my_permissions = [1,2];
const res = all_permissions.filter(({ permission_id }) => my_permissions.includes(permission_id));
console.info(res);.as-console-wrapper { max-height: 100% !important; top: auto; }Синтаксис ES5:
var all_permissions = [{permission_id:1,permission_name:"Getting User List",permission_method:"GET",permission_url:/^/panel/user$/},{permission_id:2,permission_name:"Getting User Info",permission_method:"GET",permission_url:/^/panel/user/[0-9]+$/},{permission_id:3,permission_name:"Testing",permission_method:"GET",permission_url:/^/panel/test/[a-z]+$/}];
var my_permissions = [1,2];
var res = all_permissions.filter(function(item) {
return my_permissions.indexOf(item.permission_id) > -1;
});
console.info(res);.as-console-wrapper { max-height: 100% !important; top: auto; }Вы можете использовать фильтр и включает в себя
all_permission, используя фильтрpermission_id в массиве my_permission, если он есть, возвращает true, иначе возвращает falseconst all_permissions = [{permission_id: 1,permission_name: "Getting User List",permission_method: "GET",permission_url: /^/panel/user$/},{permission_id: 2,permission_name: "Getting User Info",permission_method: "GET",permission_url: /^/panel/user/[0-9]+$/},{permission_id: 3,permission_name: "Testing",permission_method: "GET",permission_url: /^/panel/test/[a-z]+$/}]
const my_permissions = [1,2]
let op = all_permissions.filter(({permission_id})=> my_permissions.includes(permission_id))
console.info(op)Спасибо, я выбираю это, так как это самое простое решение
Вы можете попробовать с Array.prototype.filter() и Array.prototype.includes()
const all_permissions = [
{
permission_id: 1,
permission_name: "Getting User List",
permission_method: "GET",
permission_url: /^/panel/user$/
},
{
permission_id: 2,
permission_name: "Getting User Info",
permission_method: "GET",
permission_url: /^/panel/user/[0-9]+$/
},
{
permission_id: 3,
permission_name: "Testing",
permission_method: "GET",
permission_url: /^/panel/test/[a-z]+$/
}
]
const my_permissions = [1,2];
const match = all_permissions.filter(p => my_permissions.includes(p.permission_id));
console.info(match);
Что вы пробовали?