简化嵌套的 javascript 对象
simplifying a nested javascript 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-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
思路是
- 首先从对象中取出钥匙。
- 对它们进行排序 // 对象没有顺序
- 现在在
-
上拆分密钥并使用 first element
作为 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", bar2: "bar2-1value"},'2-2' : {foo2: "foo2-2Value", bar2: "bar2-2value"}}
let op = Object.keys(obj).sort().reduce((op,inp)=>{
let key = inp.split('-',1)[0]
op[key] = op[key] || {props:''}
op[key].props = op[key].props + Object.values(obj[inp]).join('')
return op
},{})
console.log(op)
我有一个看起来像这样的对象:
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
思路是
- 首先从对象中取出钥匙。
- 对它们进行排序 // 对象没有顺序
- 现在在
-
上拆分密钥并使用first element
作为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", bar2: "bar2-1value"},'2-2' : {foo2: "foo2-2Value", bar2: "bar2-2value"}}
let op = Object.keys(obj).sort().reduce((op,inp)=>{
let key = inp.split('-',1)[0]
op[key] = op[key] || {props:''}
op[key].props = op[key].props + Object.values(obj[inp]).join('')
return op
},{})
console.log(op)