Как из объекта со вложенными объектами сделать один одоноуровневый?

267
09 января 2018, 15:52

Как преобразовать данный объект:

{
  "Me": 11,
  "Children": {
    "Mike": {
      "Tom": 12
    },
    "Sister": {
      "Mary": 15
    }
  }
}

в плоский объект:

{
    "Me" : 11,
    "ChildrenMikeTom" : 12,
    "ChildrenSisterMary" : 15
}
Answer 1

Пробегаете по полям объекта при помощи цикла for in, определяете тип поля при помощи typeof и если тип object, то запускаете поиск рекурсивно

var obj = { 
  "Me": 11, 
  "Children": { 
    "Mike": { 
      "Tom": 12 
    }, 
    "Sister": { 
      "Mary": 15 
    } 
  } 
}; 
 
function merge(AObj, APrfx) { 
  var res = []; 
  for (var i in AObj) { 
    if (typeof AObj[i] === 'object') 
      res = res.concat(merge(AObj[i], APrfx + i)); 
    else 
      res.push({name: APrfx + i, val: AObj[i]}); 
  } 
  return res; 
} 
 
var arr = merge(obj, ''); 
var res = {}; 
for (var i in arr) { 
  res[arr[i].name] = arr[i].val; 
} 
console.log(res);

READ ALSO
Возникает ошибка в jQuery

Возникает ошибка в jQuery

Возникает ошибка при клике на чекбоксы для вывода общей суммы

359
Адаптивный дизайн для Adsense

Адаптивный дизайн для Adsense

ЗдравствуйтеХочу реализовать разные типы объявлений Adsense на разных экранах

224
Ошибка в формировании GET запроса

Ошибка в формировании GET запроса

Пытаюсь отправить платежную форму на сервер Payeer

254