Как перевести массив в строку
Перейти к содержимому

Как перевести массив в строку

Всё только о JavaScript

Для объединения всех элементов массива в одну строку используется метод массива join , принимающий единственным аргументом строку, которой необходимо разделить элементы.

var a = [1, 2, 3, 4]; alert(a.join('-')); // 1-2-3-4 

Метод join объединяет элементы для каждого индекса от 0 до length — 1 , при этом значения undefined и null преобразуются в пустую строку, остальные элементы приводятся к строке.

var a = [1, , null, undefined, 2]; alert(a.join('-')); // 1----2 

В спецификации языка указано

If no separator is provided, a single comma is used as the separator.

Т.е. если сепаратор не был передан, то в качестве него нужно использовать запятую. Данное предложение, однако, можно трактовать двояко: сепаратор не передан вообще или в качестве сепаратора передан undefined . Впрочем чуть ниже в спецификации указана чёткая инструкция.

If separator is undefined, let separator be the single-character string «,».

Т.е. если сепаратор равен undefined , то используется запятая. Именно такое поведение реализуют все браузеры, кроме Internet Explorer. IE подставляет запятую, только если join был вызван без аргументов.

var a = [1, 2, 3, 4]; alert(a.join()); // 1,2,3,4 во всех браузерах alert(a.join(undefined)); // 1undefined2undefined3undefined4 в IE, 1,2,3,4 в остальных браузерах 

Метод join можно использовать также для элегантной реализации повторения строки, т.е. из строки ‘ab’ , например, получить строку ‘abababab’ . Действительно, пустые элементы массива преобразуются в пустые строки, но при этом разделяются сепаратором. Следовательно, чтобы повторить строку n раз, нужно взять пустой массив, у которого length равен n + 1 , и вызвать у него метод join с аргументом, равным размножаемой строке.

/** * Повторяет исходную строку n раз. * @param n Число повторений строки * @return Размноженная строка. */ String.prototype.times = function(n) < return new Array(n + 1).join(this); >; alert('01'.times(4)); // 01010101 

Массивы, как и любой другой объект в JavaScript, имеют встроенный метод toString , вызываемый при неявном преобразовании в строку. Этот метод у них аналогичен вызову метода join без аргументов, т.е. элементы разделяются запятой.

var str = 'ab', a = [1, 2, 3, 4]; alert(str + a); // ab1,2,3,4 

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

var a = [1, 2, ['a', 'b', 'c'], 3, 4]; alert(a); // 1,2,a,b,c,3,4 Array.prototype.toString = function() < return '[' + this.join(', ') + ']'; >; alert(a); // [1, 2, [a, b, c], 3, 4] 

Создание массива из строки

Для обратного преобразования строки в массив у строк есть метод split , аналогично join принимающий разделитель, по которому требуется разбить строку.

var str = '1-2-3-4'; alert(str.split('-')); // 1,2,3,4 

Обратите внимание, что если вызвать split у пустой строки, то мы получим не пустой массив, а массив с одним элементом, равным пустой строке.

var a = ''.split(','); alert([a.length, a[0] == '']); // 1,true 

Array.prototype.toString()

Метод toString() возвращает строковое представление указанного массива и его элементов.

Синтаксис

arr.toString()

Параметры

Описание

Объект Array переопределяет метод toString объекта Object . Для объектов класса Array , метод toString соединяет массив и возвращает одну строку, содержащую каждый элемент массива, разделённый запятыми. Например, следующий код создаёт массив и использует метод toString для преобразования массива в строку.

var monthNames = ["Янв", "Фев", "Мар", "Апр"]; var myVar = monthNames.toString(); // присваивает 'Янв,Фев,Мар,Апр' переменной myVar. 

JavaScript вызывает метод toString автоматически, когда массив представляется текстовым значением или когда массив находится в контексте конкатенации строк.

Семантика ECMAScript 5

Начиная с JavaScript 1.8.5 (Firefox 4), и в соответствии с семантикой ECMAScript 5-го издания, метод toString() является обобщённым и может использоваться с любым объектом. В случае с массивами, если он имеет метод join() , он будет вызван и результат его работы будет возвращён. В противном случае будет вызван метод Object.prototype.toString() , и будет возвращён результат его работы.

Спецификации

Specification
ECMAScript Language Specification
# sec-array.prototype.tostring

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 4 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

как массив перевести в строку js

Для того, чтобы перевести массив в строку в JavaScript, можно воспользоваться методом join() , который объединяет все элементы массива в одну строку с помощью указанного разделителя.

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

const words = [ 'Лучше', 'один', 'раз', 'увидеть', 'чем', 'сто', 'раз', 'услышать', ]; const phrase = words.join(' '); console.log(phrase); // "Лучше один раз увидеть чем сто раз услышать" 

В данном примере метод join() объединяет все элементы массива words в одну строку с помощью пробела в качестве разделителя.

Как из массив перевести в строку без запятых

При этом в качестве параметра join() передается строка, которая будет вставляться между символами исходного массива.

Отслеживать
ответ дан 31 янв 2019 в 19:45
1,182 9 9 серебряных знаков 22 22 бронзовых знака

var text = ['H', 'e', 'l', 'l', 'o', '!']; var result = text.reduce((res, item) => res + item, ''); console.log(result);

Отслеживать
ответ дан 31 янв 2019 в 19:49
user176262 user176262

А чем этот вариант отличается от решения, предложенного @wcobalt ‘ом? Какие особенности, отличия, как работает?))

31 янв 2019 в 20:54
@Pon4iPay Ключевые слова для поиска: javascript, array, reduce.
– user176262
31 янв 2019 в 20:57

  • javascript
  • массивы
  • строки
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.29.1725

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *