Получение последнего элемента массива разделенных строк
Мне нужно получить последний элемент разбитого массива с несколькими разделителями. Сепараторы являются запятыми и пространством. Если нет разделителей, он должен вернуть исходную строку.
Если строка "как, вы делаете, сегодня?" он должен вернуться "сегодня?"
Если вход был "привет", выход должен быть "привет".
Как я могу сделать это в 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"