简化嵌套javascript对象

简化嵌套javascript对象,javascript,arrays,object,nested-object,Javascript,Arrays,Object,Nested Object,我有一个像这样的对象: var someUglyObject = { "1-1" : {foo1: "foo1-1Value", bar1: "bar1-1value"}, "1-2" : {foo2: "foo1-2Value", bar2: "bar1-2value"}, "2-1" : {foo2: "foo2-1Value", bar2: "bar2-1value"}, "2-2" : {foo2: "foo2-2Value", bar2: "bar2-

我有一个像这样的对象:

var someUglyObject = 
{
    "1-1" : {foo1: "foo1-1Value", bar1: "bar1-1value"},
    "1-2" : {foo2: "foo1-2Value", bar2: "bar1-2value"},
    "2-1" : {foo2: "foo2-1Value", bar2: "bar2-1value"},
    "2-2" : {foo2: "foo2-2Value", bar2: "bar2-2value"}
}
我需要简化上面的嵌套对象,并在进行如下处理(串联)后转换为更简单的对象:

var myObj = { 
             "1": { propsTogether : "foo1-1Valuebar1-1valuefoo1-2Valuebar1-2value"},
             "2": { propsTogether : "foo2-1Valuebar2-1valuefoo2-2Valuebar2-2value" }
        }
我的计划是通过这样的键进行交互,但不确定如何根据键的第一个字符将道具组合在一起,即对于值为“2-1”的键,2应该是新键

var myObj= {};
Object.keys(someUglyObject).forEach(function(key) {

}

您可以使用
Object.keys
reudce

这是我的想法

  • 首先从对象中取出钥匙
  • 对它们进行排序//对象没有顺序
  • 现在在
    -
    上拆分键,并使用
    第一个元素
    作为
    op
    对象上的键
  • 使用object.values并以所需格式连接它们,然后将其放置在相应的键上
var obj={'1-1':{foo1:foo1-1Value',bar1:bar1-1Value},'1-2':{foo2:foo1-2Value',bar2:bar1-2Value},'2-1':{foo2:foo2-1Value},'2-2':{foo2:foo2-2Value',bar2:bar2:bar2:2Value}
让op=Object.keys(obj.sort().reduce((op,inp)=>{
设key=inp.split('-',1)[0]
op[key]=op[key]|{props:'}
op[key].props=op[key].props+Object.values(obj[inp]).join(“”)
返回操作
},{})

console.log(op)
第二个对象不是比第一个更难看吗(它们都不漂亮,但第二个完全不可读)看起来很漂亮!谢谢你的解释@AJSIFT总是乐于帮助:)我如何简单地提取嵌套对象,如
{1:{foo1:foo1-1Value],bar1:bar1-1Value},{foo2:foo1-2Value],bar2:bar1-2Value},2:{..},{..}
?@aJSIFT这不是JSON中需要的
键:值
对的有效格式,
1:{foo1:foo1:1Value“,
这不是。