Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将字符串数组转换为对象?_Javascript_Arrays_Object_Functional Programming - Fatal编程技术网

Javascript 如何将字符串数组转换为对象?

Javascript 如何将字符串数组转换为对象?,javascript,arrays,object,functional-programming,Javascript,Arrays,Object,Functional Programming,我有一个数组属性的对象。为了获得可接受的输出,我做了两个 代码中的方法 方法1:将在对象中显示对象数组而不是字符串值数组。 方法2:将显示我已接受的输出 let data = { Invoice: ["can_view", "can_create", "can_edit", "can_delete"], license: ["can_view", "can_create", "can_edit", "can_delete"] } 问题是我在方法1中做了一个额外的循环来获取对象数组。然

我有一个数组属性的对象。为了获得可接受的输出,我做了两个 代码中的方法

方法1:将在对象中显示对象数组而不是字符串值数组。
方法2:将显示我已接受的输出

let data = {
  Invoice: ["can_view", "can_create", "can_edit", "can_delete"],
  license: ["can_view", "can_create", "can_edit", "can_delete"] 
}
问题是我在方法1中做了一个额外的循环来获取对象数组。然后将其转换为接受数据的方法

我不需要方法1,我想要得到我接受的基于数据的字符串数组

在方法2中应该改变什么

//方法1:

 let values = Object.entries(data).map(([key, values]) => ({
      [key]: values.map(v => ({ label: v, value: v }))
    }));
console.log(values)
//方法:2

 function convertdatatoObj (value,group){
   let permissionAccess;
    let permissionArray = value && value.filter(item => item[group]);
    const permissionObj = Object.assign({}, permissionArray);
    let res =
      permissionObj[0] &&
      permissionObj[0][group] &&
      permissionObj[0][group].map(item => {
        return {
          value: item.value
        };
      });
    const obj = Object.assign({}, res);
    permissionAccess = Object.fromEntries(
      Object.entries(obj) && Object.entries(obj).map(([k, v]) => [v.value, v])
    );
    return permissionAccess;

 }

 let result = convertdatatoObj(values,"Invoice")

console.log(result) 

// My accepeted Output would be this format:

let res = {
can_view: {value: "can_view"},
can_create: {value: "can_create"},
can_edit: {value: "can_edit"},
can_delete: {value: "can_delete"},
}
您可以使用一个映射的条目数组

var permissions=[“可以查看”、“可以创建”、“可以编辑”、“可以删除”],
result=Object.fromEntries(permissions.map(value=>[value,{value}]);
控制台日志(结果)您可以使用映射的条目数组执行

var permissions=[“可以查看”、“可以创建”、“可以编辑”、“可以删除”],
result=Object.fromEntries(permissions.map(value=>[value,{value}]);

控制台日志(结果)
如果有对象和名称,只需获取相应的数组并使用将其转换为键,键是给定的数组项,值是
{value:}
。最后,使用以下方法构造对象:

let数据={
发票:[“可以查看”、“可以创建”、“可以编辑”、“可以删除”],
许可证:[“可以查看”、“可以创建”、“可以编辑”、“可以删除”]
}
函数convertdatatoObj(值,组){
if(!value&&!Array.isArray(value[group]))
返回;
返回Object.fromEntries(
值[group].map(权限=>[permission,{value:permission}])
)
}
让结果=convertdatatoObj(数据,“发票”)

log(result)
如果您有对象和名称,您只需获取相应的数组并使用将其转换为键,键是给定的数组项,值是
{value:}
。最后,使用以下方法构造对象:

let数据={
发票:[“可以查看”、“可以创建”、“可以编辑”、“可以删除”],
许可证:[“可以查看”、“可以创建”、“可以编辑”、“可以删除”]
}
函数convertdatatoObj(值,组){
if(!value&&!Array.isArray(value[group]))
返回;
返回Object.fromEntries(
值[group].map(权限=>[permission,{value:permission}])
)
}
让结果=convertdatatoObj(数据,“发票”)

console.log(result)
那么,方法2中的
value
应该从一开始就使用
数据吗?是的,现在,我从方法1传递数据,但是现在,它应该是dataSo,方法2中的
value
应该从一开始就使用
数据吗?是的,现在,我从方法1传递数据,但是现在,它应该是数据例如,let data={Invoice:[“can_view”,“can_create”,“can_edit”,“can_delete”],license:[“can_view”,“can_create”],}什么是代码格式?结果应该是什么?你能看看这个吗?例如,let data={Invoice:[“can_view”,“can_create”,“can_edit”,“can_delete”],license:[“can_view”可以创建“”],}代码格式是什么?结果应该是什么?你能看这个吗?你能看这个吗-你能看这个吗-