简化嵌套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“,
这不是。