Почему у JavaScript нет последнего метода?

Своеобразно странно, что класс JavaScript Array не предлагает последний метод для извлечения последнего элемента массива. Я знаю, что решение прост (Ar [Ar.length-1]), но, тем не менее, это слишком часто используется.

Любые серьезные причины, почему это еще не включено?

Ответ 1

Потому что Javascript изменяется очень медленно. И это потому, что люди медленно обновляют браузеры.

Многие библиотеки Javascript реализуют свою собственную функцию last(). Используйте один!

Ответ 2

Вы можете сделать что-то вроде этого:

[10, 20, 30, 40].slice(-1)[0]

Количество вспомогательных методов, которые могут быть добавлены к языку, бесконечно. Полагаю, они просто не подумали добавить это.

Ответ 3

Легко определить его самостоятельно. Это сила 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

Ответ 4

i = [].concat(loves).pop(); //corn

icon cat любит попкорн

Ответ 5

Другой вариант, особенно если вы уже используете UnderscoreJS, будет:

_.last([1, 2, 3, 4]); // Will return 4

Ответ 6

Array.prototype.last = Array.prototype.last || function() {
    var l = this.length;
    return this[l-1];
}

x = [1,2];
alert( x.last() )

Ответ 7

Пришел сюда, чтобы найти ответ на этот вопрос. Ответ на срез, вероятно, лучше всего, но я пошел дальше и создал "последнюю" функцию только для того, чтобы практиковать расширение прототипов, поэтому я подумал, что буду идти вперед и поделиться им. Он обладает дополнительным преимуществом по сравнению с некоторыми другими, позволяя вам дополнительно рассчитывать назад через массив и вытаскивать, скажем, второй, последний или третий, в последний элемент. Если вы не укажете счет, он по умолчанию равен 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

Ответ 8

Вот еще один простой способ срезать последние элементы

 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"] и т.д.

Ответ 9

pop() метод выдает последнее значение. Но проблема в том, что вы потеряете последнее значение в массиве

Ответ 10

Да, или просто:

var arr = [1, 2, 5];
arr.reverse()[0]

если вы хотите значение, а не новый список.