У вас есть объект и имя, вы можете просто получить соответствующий массив и преобразовать его, используя Array#map
в ключ, который является заданной записью массива, и значением, равным {value: <item entry>}
, Наконец, создайте объект, используя Object.fromEntries
:
let data = {
Invoice: ["can_view", "can_create", "can_edit", "can_delete"],
license: ["can_view", "can_create", "can_edit", "can_delete"]
}
function convertdatatoObj(value, group) {
if (!value && !Array.isArray(value[group]))
return;
return Object.fromEntries(
value[group].map(permission => [permission, { value: permission }])
)
}
let result = convertdatatoObj(data, "Invoice")
console.log(result)
Это можно сделать с помощью Array#reduce
путем клонирования объекта каждый раз:
let data = {
Invoice: ["can_view", "can_create", "can_edit", "can_delete"],
license: ["can_view", "can_create", "can_edit", "can_delete"]
}
function convertdatatoObj(value, group) {
if (!value && !Array.isArray(value[group]))
return;
return value[group]
.reduce(
(obj, permission) => ( {...obj, [permission]: { value: permission } } ),
{}
)
}
let result = convertdatatoObj(data, "Invoice")
console.log(result)
Или мутировать один экземпляр с Object.assign
:
let data = {
Invoice: ["can_view", "can_create", "can_edit", "can_delete"],
license: ["can_view", "can_create", "can_edit", "can_delete"]
}
function convertdatatoObj(value, group) {
if (!value && !Array.isArray(value[group]))
return;
return value[group]
.reduce(
(obj, permission) => Object.assign(obj, { [permission]: { value: permission } } ),
{}
)
}
let result = convertdatatoObj(data, "Invoice")
console.log(result)