Довольно странно, что класс JavaScript Array не предлагает последний метод для получения последнего элемента массива. Я знаю, что решение простое (Ar [Ar.length-1]), но, тем не менее, оно используется слишком часто.
Есть ли серьезные причины, по которым это еще не включено?
javascript
Нихил Гарг
источник
источник
item= array.pop();
.array[array.length-1]
в пути быстрее , чем другие.(Ar[Ar.length-1])
получает в 20 раз лучшую производительность для меня.Ответы:
Потому что Javascript меняется очень медленно. И это потому, что люди медленно обновляют браузеры.
Многие библиотеки Javascript реализуют свои собственные
last()
функции. Используйте один!источник
last()
функцию. Вопрос касался характера развития самого базового языка Javascript.Вы можете сделать что-то вроде этого:
Показать фрагмент кода
Количество вспомогательных методов, которые можно добавить в язык, бесконечно. Я полагаю, они просто не подумали о добавлении этого.
источник
Один легко определить самостоятельно. В этом сила JavaScript.
Однако это может вызвать проблемы со сторонним кодом, который (неправильно) использует
for..in
циклы для перебора массивов.Однако, если вы не связаны проблемами поддержки браузера , то использование нового синтаксиса ES5 для определения свойств может решить эту проблему, сделав функцию неперечисляемой, например:
источник
for..in
проблемы. Конечно, мы еще не достигли широкой реализации ES5, но этого достаточно, чтобы знать, поскольку браузеры быстро его догоняют, включая IE9.this.length - 1
вычисляется значение-1
, которое, поскольку это отрицательное число, рассматривается как свойство массива, а не как индекс элемента.i = [].concat(loves).pop(); //corn
значок кошка любит попкорн
источник
Другой вариант, особенно если вы уже используете UnderscoreJS, будет:
источник
источник
null
илиundefined
?this[l-1]
даст вам,undefined
как обычно, доступ к несуществующим свойствам. Лично я бы предпочел, чтобы JS генерировал исключение, а не возвращалсяundefined
, но JS предпочитает скрывать ошибки.Я пришел сюда в поисках ответа на этот вопрос. Срезанный ответ, вероятно, лучший, но я пошел дальше и создал «последнюю» функцию, просто чтобы попрактиковаться в расширении прототипов, поэтому я подумал, что пойду вперед и поделюсь ею. Он имеет дополнительное преимущество по сравнению с некоторыми другими, так как позволяет вам необязательно считать в обратном порядке по массиву и вытаскивать, скажем, предпоследний или третий до последнего элемент. Если вы не укажете счетчик, по умолчанию он будет равен 1 и вытащит последний элемент.
источник
last(4)
илиlast(9)
теряете смысл имени функции, т.е.last
Вот еще один более простой способ разрезать последние элементы
lastObj
сейчас["barfoo"]
.Python делает это так же, и когда я попытался использовать JS, это сработало. Я предполагаю, что манипуляции со строками в языках сценариев работают одинаково.
Точно так же, если вам нужны последние два объекта в массиве,
даст вам
["foobar", "barfoo"]
и так далее.источник
lastObj
будет содержать["barfoo"]
. В любом случае, зачем мне это делать,Array.prototype.slice.call(tags
а не простоtags.slice
?pop()
метод выведет последнее значение. Но проблема в том, что вы потеряете последнее значение в массивеисточник
Да, или просто:
если вам нужно значение, а не новый список.
источник