Ответ 1
Не все должно быть выполнено с помощью jQuery.
В обычном старом javascript вы можете:
var pg_url = array_fragment[array_fragment.length - 2]
Легче и быстрее:)
Как я могу получить последний второй элемент в массиве?
Например,
var fragment = '/news/article-1/'
var array_fragment = fragment.split('/');
var pg_url = $(array_fragment).last()[0];
Это возвращает пустое значение. Но я хочу получить article-1
Спасибо.
Не все должно быть выполнено с помощью jQuery.
В обычном старом javascript вы можете:
var pg_url = array_fragment[array_fragment.length - 2]
Легче и быстрее:)
Похоже, вы также можете использовать метод Javascript slice
:
> path = 'a/b/c/d';
> path.split('/').slice(-2, -1)[0];
'c'
Вы также можете думать о "от второго до последнего элемента в массиве" как "второй элемент массива обратного":
> path = 'a/b/c/d';
> path.split('/').reverse()[1];
'c'
Шаг 1: Используйте метод split() для разбиения элементов на массив.
var fragment_arr = fragment.split("/");
Шаг 2: Используйте slice (-2) Метод для выбора последнего 2 элемента из массива, отрицательного числа для выбора из конца массива.
var lastTwo = fragment_arr.slice(-2);
Шаг 3: lastTwo
массив содержит последние два элемента fragment_arr
, теперь вы можете получить доступ, как этот
var element = lastTwo[0];
alert(element);
Короткий ответ: вы можете комбинировать шаги 2 и 3 следующим образом.
var element = fragment_arr.slice(-2)[0];
alert(element);
var pg_url = array_fragment[array_fragment.length -2]
array_fragment не является переменной jquery, это простая старая javascript-переменная, поэтому нет необходимости в $()
Если доступ к массивам в обратном порядке - это то, что будет часто требоваться, а не только от второго к последнему индексу, может быть использовано простое расширение прототипа.
При расширении чего-то большего размера и использования в качестве прототипа Array убедитесь, что вы не собираетесь влиять на какую-либо другую часть его использования. Это делается путем проверки того, что свойство не перечислимо, так что for in
не будет подавлять в другом месте (некоторые люди и библиотеки используют for in
для итерации массивов).
Object.defineProperty(Array.prototype, 'rev', {
enumerable: false,
value: function(index){
return this[this.length - 1 - index];
}
});
document.write([1,2,3,4,5,6].rev(1));
Следующие строки работают с строкой с частями n-го 'url'.
var fragment = '/t/e/s/t/i/n/g/';
var fragment = '/t/';
Если фрагмент имеет переменную длину, вам нужно решение, которое работает для различных размеров фрагментов.
var fragment = '/news/article-1/';
var array_fragment = fragment.split('/');
Разделить разделяет строку фрагмента, в которой он находит '/'. Split принимает значение до и после разделительного символа. В этом случае нет ничего перед первой косой чертой или после последней косой черты. Пустые значения добавляются в array_fragment в позиции первого и последнего массивов.
jQuery
var pg_url = $(array_fragment)[$(array_fragment).length - 2];
javascript
var pg_url = array_fragment[array_fragment.length - 2];
Как вы можете видеть, jQuery не требуется для этого решения.
Array_fragment.length - 2 подсчитывает длину массива array_fragment и выбирает второй элемент из конца. Последнее значение - "" из-за Split ('/'), добавляющего пустое значение в конец массива array_fragment.
Упрощенный и все вместе:
var f = '/t/e/s/t/i/n/g/'.split('/');
f[f.length - 2]