Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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_Associative Array - Fatal编程技术网

如何从JavaScript中的数组键列表创建子关联对象?

如何从JavaScript中的数组键列表创建子关联对象?,javascript,arrays,object,associative-array,Javascript,Arrays,Object,Associative Array,我有一个来自用户输入的对象。该对象的键由逗号分隔,我只想分隔这些键并生成该对象的键 下面的key\u数组是用户输入的动态数组,每次生成一个不同的数组,下面我给你举个例子。 我已经在我的代码中显示了对象,您可以在下面看到。您还可以通过运行该代码来查看输出 var主数组={}; 变量键数组={ '用户名':'用户名', “用户,电子邮件”:“电子邮件地址”, “订单,id”:123456, “订单,数量”:2, “订单总数”:300, '订单,产品,0,名称':“产品1”, “订单,产品,0,数量

我有一个来自用户输入的对象。该对象的键由逗号分隔,我只想分隔这些键并生成该对象的键

下面的
key\u数组
是用户输入的动态数组,每次生成一个不同的数组,下面我给你举个例子。 我已经在我的代码中显示了对象,您可以在下面看到。您还可以通过运行该代码来查看输出

var主数组={};
变量键数组={
'用户名':'用户名',
“用户,电子邮件”:“电子邮件地址”,
“订单,id”:123456,
“订单,数量”:2,
“订单总数”:300,
'订单,产品,0,名称':“产品1”,
“订单,产品,0,数量”:1,
“订单、产品、0、价格”:100,
'订单,产品,1,名称':“产品2”,
“订单,产品,1,数量”:1,
“订单、产品、1、价格”:200,
};
用于(键数组中的键){
var值=键_数组[键];
//我在这里做什么来获得我想要的输出?
main_数组['['+键。拆分(“,”).join('][')+']']']=value;
}

console.log(主_数组)
您可以从字符串动态创建所需的对象和键,获取每个键并使用
split(',')
将其拆分为一个数组。使用数组中的每个项创建所需的结构。假设一个键是一个数字,那么它的父项必须是一个数组

Object.key(key\u数组).forEach(key=>{
const path=key.split(',');
让电流=主_阵列;
for(设i=0;i
您可以从字符串中动态创建所需的对象和键,获取每个键并使用
split(',')将其拆分为一个数组。
。使用数组中的每个项创建所需的结构。假设一个键是一个数字,那么它的父项必须是一个数组

Object.key(key\u数组).forEach(key=>{
const path=key.split(',');
让电流=主_阵列;
for(设i=0;i
  • 使用
    Object.entries
    检查对象的键和值
  • 分隔符拆分
    ,然后构建对象
  • 构建对象时,请确保使用
    mergeTo
    方法合并键和值
  • 然后转换具有数字键的对象,然后使用
    convertObjsToArray
    方法转换为对象
  • var键数组={
    “用户名”:“用户名”,
    “用户,电子邮件”:“电子邮件地址”,
    “订单,id”:123456,
    “订单数量”:2,
    “订单总数”:300,
    “订单、产品、0、名称”:“产品1”,
    “订单,产品,0,数量”:1,
    “订单,产品,0,价格”:100,
    “订单、产品、1、名称”:“产品2”,
    “订单,产品,1,数量”:1,
    “订单、产品、1、价格”:200
    };
    const mergeTo=(目标,对象)=>{
    Object.entries(obj.forEach)([key,value])=>{
    if(typeof value==“object”&&!Array.isArray(value)){
    如果(!target[key]){
    目标[键]={};
    }
    合并到(目标[键]、对象[键]);
    }否则{
    目标[键]=值;
    }
    });
    };
    const convertObjsToArray=obj=>{
    Object.entries(obj.forEach)([key,value])=>{
    如果(值的类型==“对象”){
    if(Object.keys(value.every)(num=>Number.isInteger(Number(num))){
    obj[key]=对象值(value);
    }否则{
    convertObjsToArray(obj[key]);
    }
    }
    });
    };
    常数res={};
    Object.entries(key_数组).map([key,value])=>{
    const keys=key.split(“,”);
    让curr={[keys.pop()]:value};
    while(keys.length>0){
    curr={[keys.pop()]:curr};
    }
    合并到(当前,当前);
    });
    convertObjsToArray(res);
    控制台日志(res)
    
  • 使用
    Object.entries
    检查对象的键和值
  • 分隔符拆分
    ,然后构建对象
  • 构建对象时,请确保使用
    mergeTo
    方法合并键和值
  • 然后转换具有数字键的对象,然后使用
    convertObjsToArray
    方法转换为对象
  • var键数组={
    “用户名”:“用户名”,
    “用户,电子邮件”:“电子邮件地址”,
    “订单,id”:123456,
    “订单数量”:2,
    “订单总数”:300,
    “订单、产品、0、名称”:“产品1”,
    “订单,产品,0,数量”:1,
    “订单,产品,0,价格”:100,
    “订单、产品、1、名称”:“产品2”,
    “订单,产品,1,数量”:1,
    “订单、产品、1、价格”:200
    };
    const mergeTo=(目标,对象)=>{
    Object.entries(obj.forEach)([key,value])=>{
    if(typeof value==“object”&&!Array.isArray(value)){
    如果(!target[key]){
    目标[键]={};
    }
    合并到(目标[键]、对象[键]);
    }否则{
    目标[键]=值;
    }
    });
    };
    const convertObjsToArray=obj=>{
    Object.entries(obj.forEach)([key,value])=>{
    如果(值的类型==“对象”){
    if(Object.keys(value.every)(num=>Number.isInteger(Number(num))){
    obj[key]=对象值(value);
    }否则{
    convertObjsToArray(obj[key]);
    }
    }
    });
    };
    常数res={};
    Object.entries(key_数组).map([key,value])=>{
    const keys=key.split(“,”);
    让curr={[keys.pop()]:value};
    while(keys.length>0){
    curr={[keys.pop()]:curr};
    }
    合并到(当前,当前);
    });
    convertObjsToArray(res);
    
    控制台日志(res)迭代分割结果并相应地构建对象?迭代分割结果并相应地构建对象?