У меня есть функция, которая зацикливает массив, и у меня есть четыре if - если они соответствуют I pu sh значение для выходного массива:
const generate = (resources, resourceId) => {
let output = [];
for (let i = 0; i < resources.length; i++) {
if (resources[i].id === resourceId) {
if (CREATE & resources[i].privileges) {
output.push(CREATE);
}
if (READ & resources[i].privileges) {
output.push(READ);
}
if (UPDATE & resources[i].privileges) {
output.push(UPDATE);
}
if (DELETE & resources[i].privileges) {
output.push(DELETE);
}
}
}
return output;
};
Я хочу изменить эту функцию, чтобы использовать map
- is Возможно? Я пытаюсь сделать что-то вроде этого:
const generateUsingMap = (resources, resourceId) => {
return resources.map((resource) => {
if (resource.id === resourceId) {
if (CREATE & resource.privileges) {
return CREATE;
}
if (READ & resource.privileges) {
return READ;
}
if (UPDATE & resource.privileges) {
return UPDATE;
}
if (UPDATE & resource.privileges) {
return UPDATE;
}
}
});
};
Но в этом случае у меня будет только одно значение, потому что оно возвращается из первого if. Может мне нужно использовать другую функцию? Я не хочу использовать for или forEach, потому что в этом случае мне нужно создать ненужную переменную.
Обновление
Моя функция работает в l oop, функция получает 2 аргумента resources
и resourceId
. Например, переменная resources
содержит:
{
"id": "1",
"name": "Test name 1",
"privileges": 1
},
{
"id": "2",
"name": "Test name 2",
"privileges": 2
},
{
"id": "3",
"name": "Test name 3",
"privileges": 8
},
{
"id": "4",
"name": "Test name 4",
"privileges": 0
},
{
"id": "5",
"name": "Test name 5",
"privileges": 15
}
]
Переменная resourceId
содержит число (id) и получает отдельные значения, например, на первой итерации 1, для второй 2 и т. Д.
Для ресурсов из примера ожидаемый результат будет:
[1]
[2]
[8]
[]
[1,2,4,8]