Плоская сериализация JSON - PullRequest
0 голосов
/ 08 июня 2018

Какой эффективный способ превратить это:

{
  person:{
    name:'John',
    address:{
      city:'England',
      street:'99',
    }
  }
}

В это:

{
  'person.name' :'John',
  'person.address.city':'England',
  'person.address.street':'99'
}

Спасибо!Ps.Он мне нужен для одновременного обновления монго-документов с несколькими полями без замены целых объектов (используя $ set).

1 Ответ

0 голосов
/ 08 июня 2018

Упрощенный пример:

function flatten(object, result = {}, path) {
  if (!(object instanceof Object)) return result[path] = object;
  for (var key in object) flatten(object[key], result, path ? path + '.' + key : key); 
  return result;
}

console.log(flatten({ person:{ name:'John', address:{ city:'England', street:'99' }}}));

console.log( flatten( [[0]] ) );

console.log( flatten( 0 ) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...