Получение последнего элемента массива разделенных строк

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

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

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

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

Ответ 1

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?"

Ответ 2

Там однострочный для всего.:)

var output = input.split(/[, ]+/).pop();

Ответ 3

var item = "one,two";
var lastItem = item.split(",").pop(-1);

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

Ответ 4

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

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

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

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

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

array1.split(",").pop()

Ответ 5

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

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)/

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

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

Ответ 6

array.split(' ').slice(-1)[0]

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

Ответ 7

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

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

Ответ 8

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 >>";

Ответ 9

Если вам нужен только последний элемент, а не результат .split() впоследствии, вы можете использовать .pop() Array. Осторожно, он удаляет последний элемент из целевого массива, поэтому он не будет таким же после вызова .pop()

let lastelement = 'how,are you doing, today?'
    .split(/[\s,]+/) // ["how", "are", "you", "doing", "today"]
    .pop();          // "today"