Перейти к содержимому

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

  • автор:

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

При этом в качестве параметра 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.

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

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

Всё только о 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.join()

Метод join() объединяет все элементы массива (или массивоподобного объекта) в строку.

Интерактивный пример

Синтаксис

arr.join([separator])

Параметры

separator Необязательный

Определяет строку, разделяющую элементы массива. В случае необходимости тип разделителя приводится к типу Строка. Если он не задан, элементы массива разделяются запятой ‘,‘. Если разделитель — пустая строка, элементы массива ничем не разделяются в возвращаемой строке.

Возвращаемое значение

Строка, содержащая все элементы массива. Если arr.length == 0 , то будет возвращена пустая строка.

Описание

Преобразует все элементы массива в строки и объединяет их в одну большую строку. Элемент массива с типом undefined или null преобразуется в пустую строку.

Примеры

Соединение массива четырьмя различными способами

В следующем примере создаётся массив a с тремя элементами, затем они четыре раза объединяются в строку: с использованием разделителя по умолчанию, запятой с пробелом, плюса, окружённого пробелами, и пустой строки.

var a = ["Ветер", "Дождь", "Огонь"]; var myVar1 = a.join(); // присвоит 'Ветер,Дождь,Огонь' переменной myVar1 var myVar2 = a.join(", "); // присвоит 'Ветер, Дождь, Огонь' переменной myVar2 var myVar3 = a.join(" + "); // присвоит 'Ветер + Дождь + Огонь' переменной myVar3 var myVar4 = a.join(""); // присвоит 'ВетерДождьОгонь' переменной myVar4 

Соединение элементов массивоподобного объекта

В следующем примере соединяется массивоподобный объект (в данном случае список аргументов функции) с использованием вызова Function.prototype.call для Array.prototype.join .

function f(a, b, c)  var s = Array.prototype.join.call(arguments); console.log(s); // '1,a,true' > f(1, "a", true); 

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

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

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

BCD tables only load in the browser

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

  • String.prototype.split()
  • Array.prototype.toString()
  • TypedArray.prototype.join()

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.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2024 by individual mozilla.org contributors. Content available under a Creative Commons license.

Преобразование массива в строку

В этом коротком руководстве мы рассмотрим преобразование массива строк или целых чисел в строку и обратно.

Мы можем добиться этого с помощью vanilla Java и служебных классов Java из часто используемых библиотек.

2. Преобразовать массив в строку​

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

Реализация метода toString() по умолчанию для массива возвращает что-то вроде Ljava.lang.String;@74a10858 , что информирует нас только о типе объекта и хэш-коде.

Однако служебный класс java.util.Arrays поддерживает работу с массивами и строками, включая метод toString() для массивов.

Arrays.toString() возвращает строку с содержимым входного массива. Новая созданная строка представляет собой список элементов массива, разделенных запятыми, заключенных в квадратные скобки («[]»):

 String[] strArray =  "one", "two", "three" >;   String joinedString = Arrays.toString(strArray);   assertEquals("[one, two, three]", joinedString); 
 int[] intArray =  1,2,3,4,5 >;  joinedString = Arrays.toString(intArray);   assertEquals("[1, 2, 3, 4, 5]", joinedString); 

И хотя это здорово, что метод Arrays.toString(int[]) так хорошо решает эту задачу, давайте сравним его с другими методами, которые мы можем реализовать самостоятельно.

2.1. StringBuilder.append() ​

Для начала давайте посмотрим, как сделать это преобразование с помощью StringBuilder.append() :

 String[] strArray =  "Convert", "Array", "With", "Java" >;   StringBuilder stringBuilder = new StringBuilder();   for (int i = 0; i  strArray.length; i++)    stringBuilder.append(strArray[i]);   >   String joinedString = stringBuilder.toString();   assertEquals("ConvertArrayWithJava", joinedString); 

Кроме того, для преобразования массива целых чисел мы можем использовать тот же подход, но вместо этого вызывать Integer.valueOf(intArray[i]) при добавлении к нашему StringBuilder .

2.2. API потоков Java​

Java 8 и выше предлагает метод String.join() , который создает новую строку, объединяя элементы и разделяя их указанным разделителем, в нашем случае это просто пустая строка:

 String joinedString = String.join("", new String[] "Convert", "With", "Java", "Streams" >);   assertEquals("ConvertWithJavaStreams", joinedString); 

Кроме того, мы можем использовать метод Collectors.joining() из Java Streams API, который объединяет строки из Stream в том же порядке, что и его исходный массив:

 String joinedString = Arrays   .stream(new String[] "Convert", "With", "Java", "Streams" >)   .collect(Collectors.joining());   assertEquals("ConvertWithJavaStreams", joinedString); 

2.3. StringUtils.join() ​

И Apache Commons Lang никогда не должен оставаться в стороне от таких задач.

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

 String joinedString = StringUtils.join(new String[] "Convert", "With", "Apache", "Commons" >);   assertEquals("ConvertWithApacheCommons", joinedString); 

2.4. Столяр.присоединиться() ​

И чтобы не отставать, Guava приспосабливает то же самое к своему классу Joiner . Класс Joiner предлагает гибкий API и предоставляет несколько вспомогательных методов для объединения данных.

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

 String joinedString = Joiner.on("")   .skipNulls()   .join(new String[] "Convert", "With", "Guava", null >);   assertEquals("ConvertWithGuava", joinedString); 

3. Преобразование строки в массив строк​

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

3.1. Строка.split() ​

Во-первых, давайте начнем с разделения пробела с помощью метода String.split() без разделителя:

 String[] strArray = "loremipsum".split(""); 

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

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