упрощение вложенного объекта javascript - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть объект, который выглядит следующим образом:

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) {

}

1 Ответ

1 голос
/ 03 апреля 2019

Вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...