Задать вопрос
zhdoon
@zhdoon
Директор музея

Как объект со вложенными объектами/массивами преобразовать в объект с теми же данными с помощью JavaScript?

Есть объект с данными вида:
{
    main: Array(
                      {value : Array( [1], [2] ) },
                      {value : Array( [1], [2] ) }
    ),
    content: {
                  Array1( [1], [2: {key: value}] ), 
                  Array2( [1], [2] )
    },
   ...
}


Т.е. данный объект содержит потомков (объект/массив), которые содержат своих потомков (объект/массив) и т.д.

Если в Javascript способ преобразовать такой объект к JSON в чистом виде? Простой Stringify вложенные массивы "очищает".
  • Вопрос задан
  • 1122 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
qmax
@qmax
программер
Вероятно, "простой Stringify" - нестандартная функция и может делать, что угодно.

`JSON.stringify` никакие вложенные массивы не очищает.

Объект в примере записан с невалидным синтаксисом.
Ответ написан
Комментировать
daruvayc0
@daruvayc0
Попробуйте копать в строну метода reduce. Возможно, это довольно сложный для понимания метод, но с ним очень много крутых штук можно сделать.

Пример: функция, которая «сглаживает» массив рода [1, 2, 3, [4, [[[5, [6, 7]]]], 8]] в одномерный массив [1, 2, 3, 4, 5, 6, 7, 8].

function flatDeep(arr) {
 return arr.reduce((flattenArray, element) => {
   return Array.isArray(element) ? [...flattenArray, ...flatDeep(element)] : [...flattenArray, element]
 }, [])
}

console.log(flatDeep([1, 2, 3, [4, [[[5, [6, 7]]]], 8]])) // [1, 2, 3, 4, 5, 6, 7, 8]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы