Как вы получаете первый элемент из массива, как это:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
Я попробовал это:
alert($(ary).first());
Но это вернется [object Object]
. Поэтому мне нужно получить первый элемент из массива, который должен быть элементом 'first'
.
javascript
jquery
arrays
MacMac
источник
источник
Ответы:
как это
источник
var a = []; a[7] = 'foo'; alert(a[0]);
Почему вы используете jQuery-ванильный массив JavaScript? Используйте стандартный JavaScript!
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
Также,
Источник , любезно предоставленный Бобинсом
источник
Некоторые из способов ниже для разных обстоятельств.
В большинстве обычных случаев самый простой способ получить доступ к первому элементу - это
но для этого нужно проверить, существует ли [0] на самом деле.
Есть реальные случаи, когда вас не интересует исходный массив, и вы не хотите проверять, существует ли индекс, вы просто хотите получить первый элемент или неопределенный встроенный.
В этом случае вы можете использовать метод shift (), чтобы получить первый элемент, но будьте осторожны, так как этот метод изменяет исходный массив (удаляет первый элемент и возвращает его). Поэтому длина массива уменьшается на один. Этот метод может использоваться во встроенных случаях, когда вам просто нужно получить первый элемент, но вас не волнует исходный массив.
Важно знать, что два приведенных выше варианта возможны только в том случае, если ваш массив начинается с индекса [0].
Есть случаи, когда первый элемент был удален, например, с помощью delete yourArray [0], оставляя ваш массив с «дырами». Теперь элемент в [0] просто не определен, но вы хотите получить первый «существующий» элемент. Я видел много реальных случаев этого.
Итак, предполагая, что у нас нет знаний о массиве и первом ключе (или мы знаем, что есть дыры), мы все равно можем получить первый элемент.
Вы можете использовать find (), чтобы получить первый элемент.
Преимущество find () заключается в его эффективности, поскольку он выходит из цикла, когда достигается первое значение, удовлетворяющее условию (подробнее об этом ниже). (Вы можете настроить условие так, чтобы исключить пустые или другие пустые значения)
Я также хотел бы включить filter () в качестве опции, чтобы сначала «исправить» массив в копии, а затем получить первый элемент, сохраняя при этом исходный массив без изменений (без изменений).
Другая причина, чтобы включить сюда filter (), заключается в том, что он существовал до find (), и многие программисты уже использовали его (это ES5 против find (), являющегося ES6).
Предупреждение, что filter () не является эффективным способом (filter () проходит через все элементы) и создает другой массив. Это хорошо для небольших массивов, поскольку влияние на производительность будет незначительным, например, ближе к использованию forEach.
(Я вижу, что некоторые люди предлагают использовать цикл for ... in для получения первого элемента, но я бы рекомендовал не использовать этот метод для ... in, чтобы использовать его для перебора массива, для которого важен порядок индекса, потому что он не ' не гарантирует порядок, хотя вы можете утверждать, что браузеры в основном соблюдают порядок. Кстати, forEach не решает проблему, как многие предлагают, потому что вы не можете ее сломать, и она будет проходить через все элементы. Было бы лучше использовать простое для цикл и проверяя ключ / значение
Обе функции find () и filter () гарантируют порядок элементов, поэтому их можно безопасно использовать, как указано выше.
источник
yourArray.map(n=>n).shift()
его, он вернет первый элемент без изменения оригинала ... не знаю, будет ли это лучшим способом, но если вы объедините массив с помощью .map (). Filter (). Some (). Shift (), то все в порядке. .. иначе я бы использовалyourArray[0]
Использование ES6 деструктуризации
Который так же, как
источник
Элемент индекса 0 может не существовать, если первый элемент был удален:
Лучший способ получить первый элемент без jQuery:
источник
Если вы хотите сохранить читабельность, вы всегда можете добавить первую функцию к
Array.protoype
:А потом вы можете легко получить первый элемент:
источник
.first()
лучше, чем делать[0]
?1
.first
однозначно в этом случае.Вы можете просто использовать
find()
:Или, если вы хотите первый элемент, даже если он ложный :
Пройдя лишнюю милю:
Если вы заботитесь о читабельности, но не хотите полагаться на числовые инциденты, вы можете добавить
first()
-функцию кArray.protoype
, определив ее, с помощьюObject.defineProperty()
которой можно избежать ошибок, связанных с непосредственным изменением встроенного прототипа объекта Array ( объясняется здесь ).Производительность довольно хорошая (
find()
останавливается после первого элемента), но она не идеальна и не доступна для всех (только ES6). Для получения дополнительной информации прочитайте ответ @Selays .Затем, чтобы получить первый элемент, который вы можете сделать:
Фрагмент, чтобы увидеть это в действии:
источник
find()
?find()
давно стал частью языка. Это причина, почему приведенный выше фрагмент работает.first()
метод языкаЕсли ваш массив не заполнен с нуля индекса, вы можете использовать
Array.prototype.find()
:источник
!!element
как это пропустит ложные значения. Я бы порекомендовал использоватьfind()
таким образом:sparse.find((_, index, array) => index in array);
так как "find" возвращает первый элемент, который соответствует фильтру &&
!!e
соответствует любому элементу.Примечание Это работает только тогда , когда первый элемент не является «Falsy»:
null
,false
,NaN
,""
,0
,undefined
источник
array.find(() => true);
? Это позволяет вам делать то[false].find(() => true)
же самое ..find(value => true)
, просто работает, как и ожидалось ... но, если честно, если вы хотите более чистый код и сохранить набор текста на машинке, используйте деструктуризацию .Попробуй
alert(ary[0]);
.источник
Только если вы используете underscore.js ( http://underscorejs.org/ ), вы можете сделать:
источник
Я знаю, что люди, которые переходят с других языков на JavaScript, ищут что-то вроде
head()
илиfirst()
получают первый элемент массива, но как вы можете это сделать?Представьте, что у вас есть массив ниже:
В JavaScript вы можете просто сделать:
или аккуратнее, новый способ это:
Но вы также можете просто написать функцию, как ...
При использовании подчеркивания, есть список функций, которые делают то же самое, что и вы:
источник
Метод, который работает с массивами , и он также работает с объектами (будьте осторожны, у объектов нет гарантированного порядка!).
Я предпочитаю этот метод больше всего, потому что оригинальный массив не изменяется.
источник
В ES2015 и выше, используя деструктуризацию массива:
источник
Еще один для тех, кто занимается только правдивыми элементами
источник
Найдите первый элемент в массиве, используя фильтр:
В машинописи:
В простом JavaScript:
И аналогично, indexOf:
В машинописи:
В простом JavaScript:
источник
Когда есть несколько совпадений, JQuery .first () используется для выборки первого элемента DOM, который соответствует селектору css, данному jquery.
Вам не нужен jQuery для манипулирования массивами JavaScript.
источник
Почему бы не учитывать время, когда ваш массив может быть пустым?
источник
Просто используйте
ary.slice(0,1).pop();
В
array.slice (начало, конец) .pop ();
источник
ary[0]
?Вы также можете использовать .get (0):
Чтобы получить первый элемент массива.
источник
Используйте это, чтобы разделить символ в JavaScript.
источник
Предыдущие примеры хорошо работают, когда индекс массива начинается с нуля. Ответ thomax не опирался на индекс, начинающийся с нуля, но полагался на то,
Array.prototype.find
к чему у меня не было доступа. Следующее решение с использованием jQuery $ .each хорошо работало в моем случае.источник
Вы можете сделать это с помощью lodash
_.head
так легко.источник
arr[0]
как вы можете видеть здесь, поэтому я настоятельно не рекомендую использовать гигантскую библиотеку, такую как lodash, для такой маленькой задачи.источник
@NicoLwk Вы должны удалить элементы со сращиванием, что сместит ваш массив обратно. Так:
источник
Объявите прототип, чтобы получить первый элемент массива как:
Тогда используйте это как:
Или просто (:
источник
Если вы приковываете функции вида к массиву, например
array.map(i => i+1).filter(i => i > 3)
И хотят, чтобы первый элемент после этих функций вы можете просто добавить
.shift()
это не изменяет оригиналarray
, его лучше путь затемarray.map(i => i+1).filter(=> i > 3)[0]
Если вам нужен первый элемент массива без изменения оригинала, который вы можете использовать
array[0]
илиarray.map(n=>n).shift()
(без карты вы измените оригинал. В этом случае, кстати, я бы предложил..[0]
версию.источник
Создайте любой объект array (
req
), а затем простоObject.keys(req)[0]
выберите первый ключ в массиве Object.источник
Ответ @thomax довольно хороший, но потерпит неудачу, если первый элемент в массиве будет false или false-y (0, пустая строка и т. д.). Лучше просто вернуть true для всего, кроме undefined:
источник
ES6 легко:
источник
[false, 0, null, undefined, '', 'last'].find(v => v)
a.find(value => true)
не будет отклонять какие-либо значения. Тем не менее, я не рекомендую использовать find, чтобы получить первый элемент.