Как убрать запятые при выводе массива js
Перейти к содержимому

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

  • автор:

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

Сформировали список тэгов, расставляя после каждого «,». После последнего тоже запятая… надо убрать.

Наверное многие это уже знают, но всё же:

$str = 'tag1, tag2, tag3,'; echo substr($str, 0, -1);

Кстати, это можно решить ещё во время формирования строки.

Комментарии RSS по email OK

Psih 17 июля 2008 г., 17:56:02

Можно ещё проще $str = ‘tag1, tag2, . tagN,’; $str = trim($str, ‘,’); Как решить во время форматирования я тоже отписал свой вариант в той записи.

Ktulhu 17 июля 2008 г., 17:56:08

Позволю с вами совсем не согласиться. Для этого есть chop() (который алиас rtrim()) Вызывается легко и непринужденно chop($str, ‘,’); А еще лучше chop($str, ‘ ,’); Объясню почему — в конце строки у вас может получиться так, что будет мусор, типа » , «. Тогда вам придется делать echo substr(trim($str), 0, -1); — что есть ненужная нагрузка, когда есть chop, которому мы в конце скармливаем список символов для рубки 🙂

Sam 17 июля 2008 г., 18:29:53

Ktulhu trim тоже принимает список символов, но chop конечно более подходящая штука для данного случая.

Евгений 17 июля 2008 г., 19:03:56

А зачем формировать список тегов именно так, не удобней ли: $tags = array(‘tag1’, ‘tag2’, ‘tag3’); echo implode(‘, ‘, $tags);

Sam 17 июля 2008 г., 19:09:02

Чаще всего удобней, но иногда не выходит. Например, если массив многомерный… это не обязательно тэги.

$links = array( 0 => array( 'name' => 'link1', 'link' => 'http://name1.com/'), 1 => array( 'name' => 'link2', 'link' => 'http://name2.com/'), );

Splurov 17 июля 2008 г., 21:30:47
Sam, тогда так может проще? 🙂

$result = array(); foreach ( $links as $v )  $result[] = '' . $v[ 'link' ] . '">' . $v[ 'name' ] . ' '; > $result = implode( ', ', $result );

Sam 17 июля 2008 г., 21:40:11

Splurov Так немного медленней, чем с формированием строки и chop(). Проявляется при обработке массива от 1000 элементов.

Splurov 17 июля 2008 г., 22:05:52
Sam, к счастью, нам не приходиться выводить пользователю списки из тысячи и более составляющих
Евгений 18 июля 2008 г., 2:03:08

Ну я то именно такой массив для тегов и представлял, но не хотел менять исходные данные. Потестил тут немного для массива вида:

$links = array( 0 => array( 'name' => 'link1', 'link' => 'http://name1.com/'), 1 => array( 'name' => 'link2', 'link' => 'http://name2.com/'), );~~~ три варианта: 1) [code=php]function html_link($v)  return '' . $v[ 'link' ] . '">' . $v[ 'name' ] . ' '; > $result = implode(', ', array_map('html_link', $links));

2) как предложил Splurov [code=php]$result = array(); foreach ( $links as $v ) < $result[] = '' . $v[ 'name' ] . ''; > $result = implode( ‘, ‘, $result );

3) без массивов с chop

[php] $result = »; foreach ( $links as $v ) < $result .= '' . $v[ 'name' ] . ', '; > $result = chop($result, ‘ ,’); ~~~ Для массива $links из 10 элементов (как наиболее типичный для тегов) и 100000 повторений получилось (в секундах все): 1) 7.84984397888 2) 2.80158305168 3) 2.40084600449, просто сборка без chop 1.68192100525

Евгений 18 июля 2008 г., 2:07:38
Не очень удачно запостился коммент, предварительный просмотр не повредил бы. 1)

function html_link($v)  return '' . $v[ 'link' ] . '">' . $v[ 'name' ] . ' '; > $result = implode(', ', array_map('html_link', $links));
$result = array(); foreach ( $links as $v )  $result[] = '' . $v[ 'link' ] . '">' . $v[ 'name' ] . ' '; > $result = implode( ', ', $result );

String.prototype.split()

Метод split() разбивает объект String на массив строк путём разделения строки указанной подстрокой.

Синтаксис

str.split([separator[, limit]])

Параметры

Необязательный параметр. Указывает символы, используемые в качестве разделителя внутри строки. Параметр separator может быть как строкой, так и регулярным выражением. Если параметр опущен, возвращённый массив будет содержать один элемент со всей строкой. Если параметр равен пустой строке, строка str будет преобразована в массив символов.

Необязательный параметр. Целое число, определяющее ограничение на количество найденных подстрок. Метод split() всё равно разделяет строку на каждом сопоставлении с разделителем separator , но обрезает возвращаемый массив так, чтобы он содержал не более limit элементов.

Описание

Метод split() возвращает новый массив.

Если разделитель separator найден, он удаляется из строки, а подстроки возвращаются в массиве. Если разделитель опущен, массив будет содержать только один элемент, состоящий из всей строки. Если разделитель является пустой строкой, строка str будет преобразована в массив символов.

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

Примечание: Если строка является пустой строкой, метод split() вернёт массив, состоящий из одной пустой строки, а не пустой массив.

Примеры

Пример: использование метода split()

В следующем примере определяется функция, которая разбивает строку на массив строк, используя указанный разделитель. После разбиения строки, функция отображает сообщения, показывающие оригинальную строку (до разбиения), используемый разделитель, количество элементов в массиве и сами эти элементы.

function splitString(stringToSplit, separator)  var arrayOfStrings = stringToSplit.split(separator); console.log('Оригинальная строка: "' + stringToSplit + '"'); console.log('Разделитель: "' + separator + '"'); console.log( "Массив содержит " + arrayOfStrings.length + " элементов: " + arrayOfStrings.join(" / "), ); > // Строчка из «Бури» Шекспира. Перевод Михаила Донского. var tempestString = "И как хорош тот новый мир, где есть такие люди!"; var monthString = "Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек"; var space = " "; var comma = ","; splitString(tempestString, space); splitString(tempestString); splitString(monthString, comma); 

Пример сгенерирует следующий вывод:

Оригинальная строка: "И как хорош тот новый мир, где есть такие люди!" Разделитель: " " Массив содержит 10 элементов: И / как / хорош / тот / новый / мир, / где / есть / такие / люди! Оригинальная строка: "И как хорош тот новый мир, где есть такие люди!" Разделитель: "undefined" Массив содержит 1 элементов: И как хорош тот новый мир, где есть такие люди! Оригинальная строка: "Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек" Разделитель: "," Массив содержит 12 элементов: Янв / Фев / Мар / Апр / Май / Июн / Июл / Авг / Сен / Окт / Ноя / Дек

Пример: удаление пробелов из строки

В следующем примере метод split() ищет 0 или более пробелов, за которыми следует точка с запятой, за которой снова следуют 0 или более пробелов, и, если этот шаблон найден, удаляет пробелы из строки. Переменная nameList является массивом, возвращённым в результате работы метода split() .

var names = "Гарри Трамп ;Фрэд Барни; Хелен Ригби ; Билл Абель ;Крис Ханд "; console.log(names); var re = /\s*;\s*/; var nameList = names.split(re); console.log(nameList); 

Пример напечатает две строки; на первой строке напечатана оригинальная строчка, а на второй — получившийся массив.

Гарри Трамп ;Фред Барни; Хелен Ригби ; Билл Абель ;Крис Ханд Гарри Трамп,Фред Барни,Хелен Ригби,Билл Абель,Крис Ханд

Пример: возврат ограниченного числа подстрок

В следующем примере метод split() ищет 0 или более пробелов в строке и возвращает первые три найденных подстроки.

var myString = "Привет, мир. Как дела?"; var splits = myString.split(" ", 3); console.log(splits); 

Вывод скрипта будет следующим:

,,мир.,Как 

Пример: захват подгрупп

Если параметр separator содержит подгруппы, сопоставившиеся результаты также будут присутствовать в возвращённом массиве.

var myString = "Привет 1 мир. Предложение номер 2."; var splits = myString.split(/(\d)/); console.log(splits); 

Вывод скрипта будет следующим:

,1, мир. Предложение номер ,2,. 

Пример: обращение строки при помощи метода split()

var str = "фывапролд"; var strReverse = str.split("").reverse().join(""); // 'длорпавыф' // split() возвращает массив, к которому применяются методы reverse() и join() 

Бонус: используя оператор === (en-US), можно проверить, являлась ли строка палиндромом.

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

Specification
ECMAScript Language Specification
# sec-string.prototype.split

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

BCD tables only load in the browser

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

  • String.prototype.charAt()
  • String.prototype.indexOf()
  • String.prototype.lastIndexOf()
  • Array.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 7 авг. 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– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.

Удалить запятые из массива JS

У меня есть массив. Он отображает название и цену товара и кнопку, а после кнопки запятая, как убрать запятую?

const products = [< id: 1, title: 'Notebook', price: 1000 >, < id: 2, title: 'Mouse', price: 100 >, < id: 3, title: 'Keyboard', price: 250 >, < id: 4, title: 'Gamepad', price: 150 >, ]; const renderProduct = (title, price) => < return `
$

$

`; >; const renderProducts = list => < const productList = list.map(item =>renderProduct(item.title, item.price)); document.querySelector('.products').innerHTML = productList; >; renderProducts(products);

Отслеживать
4,017 2 2 золотых знака 12 12 серебряных знаков 28 28 бронзовых знаков
задан 9 янв 2022 в 11:00
15 1 1 серебряный знак 5 5 бронзовых знаков
Не надо так данные в разметку подставлять.
9 янв 2022 в 11:29

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

При присваивании массива свойству .innerHTML , у него автоматически вызывается метод .toString , который эквивалентен вызову метода .join(‘,’) .

Таким образом, если разделители не нужны, необходимо вызвать .join явно, передав ему в качества параметра пустую строку:

.innerHTML = productList.join('') 

Отслеживать
ответ дан 9 янв 2022 в 11:07
80.6k 9 9 золотых знаков 78 78 серебряных знаков 134 134 бронзовых знака
Да! Супер, спасибо!
9 янв 2022 в 11:11

Так как Вы используете innerHTML которое ожидает в качестве объекта приваивания строку, будет логичнее использовать функцию массива reduce которая может использоваться для массива в любой легальный объект, в данном случае в строку:

const products = [< id: 1, title: 'Notebook', price: 1000 >, < id: 2, title: 'Mouse', price: 100 >, < id: 3, title: 'Keyboard', price: 250 >, < id: 4, title: 'Gamepad', price: 150 >, ]; const renderProduct = (title, price) => < return `
$

$

`; >; const renderProducts = list => < const productList = list.reduce((acc, item) =>acc + renderProduct(item.title, item.price), ''); document.querySelector('.products').innerHTML = productList; >; renderProducts(products);

Как удалить запятую в конце массива java

Если вы хотите удалить запятую в конце массива при выводе его элементов, вы можете использовать цикл для итерации по всем элементам, кроме последнего, и добавить запятую после каждого элемента, кроме последнего. Затем вы можете вывести последний элемент массива без запятой.

int[] nums = 1, 2, 3, 4, 5>; StringBuilder sb = new StringBuilder(); for (int i = 0; i  nums.length - 1; i++)  sb.append(nums[i]).append(", "); > sb.append(nums[nums.length - 1]); String result = sb.toString(); System.out.println(result); // => 1, 2, 3, 4, 5 
  • В этом примере мы используем StringBuilder для создания строки, содержащей все элементы массива.
  • Мы проходим по всем элементам массива, кроме последнего, и добавляем их в строку, разделяя запятой и пробелом.
  • Затем мы добавляем последний элемент массива без запятой.
  • Наконец, мы выводим строку на консоль.

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

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