JavaScript | Как превратить массив в строку?

Есть массив:

var massiv = [1, 2, 3, 4, 5, 6, 7]

Этот массив мы хотим вывести на страницу или в файл, сохраняя синтаксис JavaScript. То есть мы хотим код массива преобразовать в строку, с сохранением его квадратных скобок. Как это сделать?


Нам на помощь приходит встроенный в язык JavaScript класс JSON. У конструктора JSON есть собственный метод stringify().

JSON.stringify(massiv)

Вывод в консоль:

Массив вревратили в строку - JavaScript
Массив вревратили в строку — JavaScript

Чтобы обратно получить массив из строки, нужно воспользоваться методом parse()

JSON.parse("[1,2,3,4,5,6,7]")
Строку превратили в массив - JavaScript
Строку превратили в массив — JavaScript

Разная глубина вложенности

Создадим массив разной глубины вложенности элементов.

var glubokiiMassiv = [[1, 2, 3], 4, [5, [6, 7], 8, 9], 10, [[[[[[{site:"https://efim360.ru/"}]]]]]]]
Глубокий массив - JavaScript
Глубокий массив — JavaScript

Преобразуем глубокий массив с объектом в строку:

JSON.stringify(glubokiiMassiv)
Глубокий массив стал строкой - JavaScript
Глубокий массив стал строкой — JavaScript

А теперь обратно преобразуем эту строку в массив:

JSON.parse('[[1,2,3],4,[5,[6,7],8,9],10,[[[[[[{"site":"https://efim360.ru/"}]]]]]]]')
Строка снова стала глубоким массивом - JavaScript
Строка снова стала глубоким массивом — JavaScript

Все элементы распознаны. Объект и массивы теперь понятны браузеру. Мы легко можем обратиться к любому из них.

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/"
Обратились к нужному элементу в глубоком массиве из строки - JavaScript
Обратились к нужному элементу в глубоком массиве из строки — JavaScript

 

Какие проблемы могут возникнуть при преобразовании массива в строку?

Главная проблема ожидает все «не целочисленные индексы». Что это значит? Они просто не будут использованы в строковом преобразовании, как-будто их и небыло. Пример.

Дан пустой массив:

var massiv = []

Наполняем его элементами:

massiv[-1] = "Вася"
massiv[-20] = "Петя"
massiv["ёжик"] = "ёгурт"

Это тоже массив JavaScript. Он вполне себе работает.

Не стандартный массив - JavaScript
Не стандартный массив — JavaScript

Мы также можем обращаться к значениям элементов этого массива по ключам. Просто мы добавили немного своих ассоциаций для ключей. Сейчас получается так, что в этом массиве полностью отсутствуют целочисленные индексы у элементов. Также значение свойства длины равно нулю.

Если мы попытаемся преобразовать такой массив в строковый вид, то нас постигнет неудача.

JSON.stringify(massiv)
"[]"
Только две скобки в строке - данные пропали после приведения - JavaScript
Только две скобки в строке — данные пропали после приведения — JavaScript

 

Информационные ссылки

Официальная страница стандарта ECMAScript — Раздел «24.5 The JSON Object» — https://tc39.es/ecma262/#sec-json-object

Официальная страница стандарта ECMAScripthttps://tc39.es/ecma262/

JavaScript | Массивы (Array)

JavaScript | Строки (String)

JavaScript | Отрицательный индекс элемента массива

Поделись записью