Как убрать запятые при выводе массива 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 для создания строки, содержащей все элементы массива.
- Мы проходим по всем элементам массива, кроме последнего, и добавляем их в строку, разделяя запятой и пробелом.
- Затем мы добавляем последний элемент массива без запятой.
- Наконец, мы выводим строку на консоль.