如何从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)代码>迭代分割结果并相应地构建对象?迭代分割结果并相应地构建对象?