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

将javascript对象格式化为特定结构

将javascript对象格式化为特定结构,javascript,jquery,Javascript,Jquery,我有一个javascript对象,如下所示 obj = {"account_id-0":null,"option_item_id-0":1,"value-0":"wer","account_id-1":null,"option_item_id-1":2,"value-1":"kkk","account_id-2":null,"option_item_id-2":3,"value-2":"qqqqq" .... "account_id-n":null,"option_item_id-n":6,"

我有一个javascript对象,如下所示

obj = {"account_id-0":null,"option_item_id-0":1,"value-0":"wer","account_id-1":null,"option_item_id-1":2,"value-1":"kkk","account_id-2":null,"option_item_id-2":3,"value-2":"qqqqq"
....
 "account_id-n":null,"option_item_id-n":6,"value-n":"see"
}
从上面的对象,我需要创建以下结构

{"0": {
        account_id: null,
        option_item_id: 1,
        value: "wer"
      },
 "1": {
        account_id: null,
        option_item_id: 2,
        value: "kkk"
      },
 "2": {
        account_id: null,
        option_item_id: 2,
        value: "qqqqq"
      },
  .
  .
  .
 "n": {
        account_id: null,
        option_item_id: 6,
        value: "see"
      }
}      

关于如何实现这一点,您有什么想法吗?

您可以遍历,并使用构造结果对象

让obj={
“帐户id-0”:空,
“选项项目id-0”:1,
“值-0”:“wer”,
“帐户id-1”:空,
“选项项目id-1”:2,
“价值1”:“kkk”,
“帐户id-2”:空,
“选项项目id-2”:3,
“价值2”:“QQQQ”,
“帐户id-n”:空,
“选项项目标识号”:6,
“值-0”:“请参阅”
};
让结果=Object.keys(obj).reduce((res,item)=>{
让[key,index]=item.split('-');
如果(!res[index]){
res[index]={};
}
res[索引][键]=对象[项目];
返回res;
}, {});

控制台日志(结果)您可以遍历,并使用构造结果对象

让obj={
“帐户id-0”:空,
“选项项目id-0”:1,
“值-0”:“wer”,
“帐户id-1”:空,
“选项项目id-1”:2,
“价值1”:“kkk”,
“帐户id-2”:空,
“选项项目id-2”:3,
“价值2”:“QQQQ”,
“帐户id-n”:空,
“选项项目标识号”:6,
“值-0”:“请参阅”
};
让结果=Object.keys(obj).reduce((res,item)=>{
让[key,index]=item.split('-');
如果(!res[index]){
res[index]={};
}
res[索引][键]=对象[项目];
返回res;
}, {});
控制台日志(结果)
var obj={
“帐户id-0”:空,
“选项项目id-0”:1,
“值-0”:“wer”,
“帐户id-1”:空,
“选项项目id-1”:2,
“价值1”:“kkk”,
“帐户id-2”:空,
“选项项目id-2”:3,
“值-2”:“QQQQ”
};
var-props=[];
函数getObj(ind){
for(道具中的var p){
如果(ind==p){
返回道具[p];
}
}
}
用于(obj中的var prop){
变量部分=项目拆分('-');
var键=零件[0];
var indx=零件[1];
var tmp=getObj(indx);
如果(tmp==未定义){
var x={};
x[indx]={};
x[indx][key]=obj[prop];
道具推(x);
}否则{
tmp[indx][key]=obj[prop];
}
}
控制台日志(道具)
var obj={
“帐户id-0”:空,
“选项项目id-0”:1,
“值-0”:“wer”,
“帐户id-1”:空,
“选项项目id-1”:2,
“价值1”:“kkk”,
“帐户id-2”:空,
“选项项目id-2”:3,
“值-2”:“QQQQ”
};
var-props=[];
函数getObj(ind){
for(道具中的var p){
如果(ind==p){
返回道具[p];
}
}
}
用于(obj中的var prop){
变量部分=项目拆分('-');
var键=零件[0];
var indx=零件[1];
var tmp=getObj(indx);
如果(tmp==未定义){
var x={};
x[indx]={};
x[indx][key]=obj[prop];
道具推(x);
}否则{
tmp[indx][key]=obj[prop];
}
}
控制台日志(道具)请尝试以下操作:

var keys = Object.keys(obj), i = 0
var arr = [], o = {}
for(var k in keys) {
    if(keys[k].match(/\d*$/m) == i) {
       o[keys[k].replace(/-\d*$/m,'')] = obj[keys[k]]
    } else {
         i++ 
         arr.push(o)
         o = {} 
     }
 }
在这里,我使用的是数组,而不是键为“0”、“1”、“2”的对象。。。“n”。我觉得这样更方便。

试试这个:

var keys = Object.keys(obj), i = 0
var arr = [], o = {}
for(var k in keys) {
    if(keys[k].match(/\d*$/m) == i) {
       o[keys[k].replace(/-\d*$/m,'')] = obj[keys[k]]
    } else {
         i++ 
         arr.push(o)
         o = {} 
     }
 }

在这里,我使用的是数组,而不是键为“0”、“1”、“2”的对象。。。“n”。我觉得这样更方便。

在我看来,这就像是一个字符串操作。到目前为止,您尝试了什么?对于一个简单的解决方案(性能效率可能达不到最佳水平),您可以使用
lodash/下划线
实用程序,在我看来,它就像一个字符串操作。到目前为止,您尝试了什么?要获得简单的解决方案(性能效率可能达不到最佳水平),您可以使用
lodash/下划线
实用程序