Получение последнего элемента массива разделенных строк - PullRequest
148 голосов
/ 16 марта 2009

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

Если строка "как дела, сегодня?" должно вернуться «сегодня?»

Если вход был "привет", вывод должен быть "привет".

Как я могу сделать это в JavaScript?

Ответы [ 8 ]

678 голосов
/ 16 марта 2009

Есть один вкладыш для всего. :)

var output = input.split(/[, ]+/).pop();
98 голосов
/ 16 марта 2009
var str = "hello,how,are,you,today?";
var pieces = str.split(/[\s,]+/);

На данный момент pieces является массивом, а pieces.length содержит размер массива, поэтому для получения последнего элемента массива вы проверяете pieces[pieces.length-1]. Если запятых или пробелов нет, он просто выведет строку, как было задано.

alert(pieces[pieces.length-1]); // alerts "today?"
43 голосов
/ 12 июня 2012
var item = "one,two";
var lastItem = item.split(",").pop(-1);

Это не работает?

8 голосов
/ 19 декабря 2018

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

array1.split(",").reverse()[0]

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

Ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse

Возможно, вы захотите использовать это:

array1.split(",").pop()
3 голосов
/ 11 декабря 2018
array.split(' ').slice(-1)[0]

Самый лучший и мой любимый.

3 голосов
/ 02 февраля 2012

А если вы не хотите создавать массив ...

var str = "how,are you doing, today?";
var res = str.replace(/(.*)([, ])([^, ]*$)/,"$3");

Разбивка на английском языке:

/(anything)(any separator once)(anything that isn't a separator 0 or more times)/

Замена просто говорит: замените всю строку на содержимое после последнего разделителя.

Так что вы можете видеть, как это можно применять в целом. Обратите внимание, что исходная строка не изменена.

1 голос
/ 19 июля 2017

Вы можете напрямую получить доступ к индексу массива:

var csv = 'zero,one,two,three'; csv.split(',')[0]; //result: zero csv.split(',')[3]; //result: three

0 голосов
/ 16 января 2017
var title = 'fdfdsg dsgdfh dgdh dsgdh tyu hjuk yjuk uyk hjg fhjg hjj tytutdfsf sdgsdg dsfsdgvf dfgfdhdn dfgilkj,n, jhk jsu wheiu sjldsf dfdsf hfdkdjf dfhdfkd hsfd ,dsfk dfjdf ,yier djsgyi kds';
var shortText = $.trim(title).substring(1000, 150).split(" ").slice(0, -1).join(" ") + "...More >>";
...