Ответ 1
Потому что Javascript изменяется очень медленно. И это потому, что люди медленно обновляют браузеры.
Многие библиотеки Javascript реализуют свою собственную функцию last()
. Используйте один!
Своеобразно странно, что класс JavaScript Array не предлагает последний метод для извлечения последнего элемента массива. Я знаю, что решение прост (Ar [Ar.length-1]), но, тем не менее, это слишком часто используется.
Любые серьезные причины, почему это еще не включено?
Потому что Javascript изменяется очень медленно. И это потому, что люди медленно обновляют браузеры.
Многие библиотеки Javascript реализуют свою собственную функцию last()
. Используйте один!
Вы можете сделать что-то вроде этого:
[10, 20, 30, 40].slice(-1)[0]
Количество вспомогательных методов, которые могут быть добавлены к языку, бесконечно. Полагаю, они просто не подумали добавить это.
Легко определить его самостоятельно. Это сила JavaScript.
if(!Array.prototype.last) {
Array.prototype.last = function() {
return this[this.length - 1];
}
}
var arr = [1, 2, 5];
arr.last(); // 5
Однако это может вызвать проблемы с сторонним кодом, который (неправильно) использует циклы for..in
для перебора массивов.
Однако, если вы не связаны с поддержкой браузера, то с использованием нового синтаксиса ES5 на define properties может решить эту проблему, сделав функцию неперечислимой, например:
Object.defineProperty(Array.prototype, 'last', {
enumerable: false,
configurable: true,
get: function() {
return this[this.length - 1];
},
set: undefined
});
var arr = [1, 2, 5];
arr.last; // 5
i = [].concat(loves).pop(); //corn
icon cat любит попкорн
Другой вариант, особенно если вы уже используете UnderscoreJS, будет:
_.last([1, 2, 3, 4]); // Will return 4
Array.prototype.last = Array.prototype.last || function() {
var l = this.length;
return this[l-1];
}
x = [1,2];
alert( x.last() )
Пришел сюда, чтобы найти ответ на этот вопрос. Ответ на срез, вероятно, лучше всего, но я пошел дальше и создал "последнюю" функцию только для того, чтобы практиковать расширение прототипов, поэтому я подумал, что буду идти вперед и поделиться им. Он обладает дополнительным преимуществом по сравнению с некоторыми другими, позволяя вам дополнительно рассчитывать назад через массив и вытаскивать, скажем, второй, последний или третий, в последний элемент. Если вы не укажете счет, он по умолчанию равен 1 и вытащит последний элемент.
Array.prototype.last = Array.prototype.last || function(count) {
count = count || 1;
var length = this.length;
if (count <= length) {
return this[length - count];
} else {
return null;
}
};
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.last(); // returns 9
arr.last(4); // returns 6
arr.last(9); // returns 1
arr.last(10); // returns null
Вот еще один простой способ срезать последние элементы
var tags = [1, 2, 3, "foo", "bar", "foobar", "barfoo"];
var lastObj = tags.slice(-1);
lastObj
теперь ["barfoo"]
.
Python делает это таким же образом, и когда я пытался использовать JS, это сработало. Я предполагаю, что манипуляции с строками в языках сценариев работают одинаково.
Аналогично, если вам нужны два последних объекта в массиве,
var lastTwoObj = tags.slice(-2)
предоставит вам ["foobar", "barfoo"]
и т.д.
pop()
метод выдает последнее значение. Но проблема в том, что вы потеряете последнее значение в массиве
Да, или просто:
var arr = [1, 2, 5];
arr.reverse()[0]
если вы хотите значение, а не новый список.