@hackuun

Как наиболее эффективно найти и заменить значения в объекте?

Есть объект с несколькими уровнями вложенности типо

{  
   "social":{  
      "facebook":{  
         "description":"gsdg"
      }
   },
   "tags":[  
      "5b0abc32a5101d3737b66780",
      "5b0abc37a5101d3737b66781",
      "5b0abc3ca5101d3737b66782"
   ],
   "content":[  
      {  
         "text":"sdgfsdfg",
         "textCompiled":"<p>sdgfsdfg</p>\n",
         "image":null
      }
   ],
   "createdAt":"2018-05-30T20:05:04.248Z",
   "updatedAt":"2018-05-30T20:20:55.749Z",
   "_id":"5b0f03f0673efe6da44614c4",
   "title":"One more",
   "description":"sdgdfg",
   "image":null,
   "slug":"one-more",
   "section":"5b0abc01a5101d3737b6677e",
   "__v":0
}


Как найти все значения null и заменить их, пускай пустой строкой?
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Опишу примерный алгоритм, а вы попробуйте сами его сделать.
1) Создаем функцию, которая принимает один аргумент - объект.
2) Проходим по корневым свойствам этого объекта в цикле.
3) Делаем проверку, тип текущего значения является null, меняем на пустую строку.
3.1) Если тип является объектом, то передаем этот объект в рекурсию, в эту же функцию, и начинаем с первого шага но уже для этой ветки.
4) возвращаем обработанный объект.

Объект передается по ссылке в рекурсию, поэтому ничего ждать от вызова функции рекурсии не нужно.

UPD: Мне что-то подсказывает, что данный объект вы получили из JSON строки. Так может сразу при парсинге ее обработать?
JSON.parse(data, function (key, value) {return (value == null) ? "" : value})

Тут переданная во втором аргументе функция выполняется для каждой пары ключ-значение, и берет из возвращаемого значения этой функции новое значение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vashaaa
Юх с горы
function rec(tree) {
	Object.keys(tree).forEach(i => {
            if(typeof tree[i] === 'object' && tree[i] !== null) {
                rec(tree[i]);
                return;
            }
             if(tree[i] === null) tree[i] = '';
          })
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы