Есть массив:
var massiv = [1, 2, 3, 4, 5, 6, 7]
Этот массив мы хотим вывести на страницу или в файл, сохраняя синтаксис JavaScript. То есть мы хотим код массива преобразовать в строку, с сохранением его квадратных скобок. Как это сделать?
Нам на помощь приходит встроенный в язык JavaScript класс JSON. У конструктора JSON есть собственный метод stringify().
JSON.stringify(massiv)
Вывод в консоль:
Чтобы обратно получить массив из строки, нужно воспользоваться методом parse()
JSON.parse("[1,2,3,4,5,6,7]")
Разная глубина вложенности
Создадим массив разной глубины вложенности элементов.
var glubokiiMassiv = [[1, 2, 3], 4, [5, [6, 7], 8, 9], 10, [[[[[[{site:"https://efim360.ru/"}]]]]]]]
Преобразуем глубокий массив с объектом в строку:
JSON.stringify(glubokiiMassiv)
А теперь обратно преобразуем эту строку в массив:
JSON.parse('[[1,2,3],4,[5,[6,7],8,9],10,[[[[[[{"site":"https://efim360.ru/"}]]]]]]]')
Все элементы распознаны. Объект и массивы теперь понятны браузеру. Мы легко можем обратиться к любому из них.
JSON.parse('[[1,2,3],4,[5,[6,7],8,9],10,[[[[[[{"site":"https://efim360.ru/"}]]]]]]]')[4][0][0][0][0][0][0].site
Нам вернётся строка:
"https://efim360.ru/"
Какие проблемы могут возникнуть при преобразовании массива в строку?
Главная проблема ожидает все «не целочисленные индексы». Что это значит? Они просто не будут использованы в строковом преобразовании, как-будто их и небыло. Пример.
Дан пустой массив:
var massiv = []
Наполняем его элементами:
massiv[-1] = "Вася" massiv[-20] = "Петя" massiv["ёжик"] = "ёгурт"
Это тоже массив JavaScript. Он вполне себе работает.
Мы также можем обращаться к значениям элементов этого массива по ключам. Просто мы добавили немного своих ассоциаций для ключей. Сейчас получается так, что в этом массиве полностью отсутствуют целочисленные индексы у элементов. Также значение свойства длины равно нулю.
Если мы попытаемся преобразовать такой массив в строковый вид, то нас постигнет неудача.
JSON.stringify(massiv) "[]"
Информационные ссылки
Официальная страница стандарта ECMAScript — Раздел «24.5 The JSON Object» — https://tc39.es/ecma262/#sec-json-object
Официальная страница стандарта ECMAScript — https://tc39.es/ecma262/