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

206
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

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

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

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

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

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

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

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

203