Как получить первый элемент массива?

Как вы получаете первый элемент из массива, как это:

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];

Я попробовал это:

alert($(ary).first());

Но это вернуло бы [object Object]. Поэтому мне нужно получить первый элемент из массива, который должен быть элементом 'first'.

Ответ 1

как это

alert(ary[0])

Ответ 3

Некоторые из способов ниже для разных обстоятельств.

В большинстве обычных случаев самый простой способ получить доступ к первому элементу - это

yourArray[0]

но для этого нужно проверить, существует ли [0] на самом деле.

Есть реальные случаи, когда вас не интересует исходный массив, и вы не хотите проверять, существует ли индекс, вы просто хотите получить первый элемент или неопределенный встроенный.

В этом случае вы можете использовать метод shift(), чтобы получить первый элемент, но будьте осторожны, так как этот метод изменяет исходный массив (удаляет первый элемент и возвращает его). Поэтому длина массива уменьшается на один. Этот метод может использоваться во встроенных случаях, когда вам просто нужно получить первый элемент, но вас не волнует исходный массив.

yourArray.shift()

Важно знать, что два приведенных выше варианта возможны только в том случае, если ваш массив начинается с индекса [0].

Есть случаи, когда первый элемент был удален, например, с помощью delete yourArray [0], оставляя ваш массив с "дырами". Теперь элемент в [0] просто не определен, но вы хотите получить первый "существующий" элемент. Я видел много реальных случаев этого.

Итак, предполагая, что у нас нет знаний о массиве и первом ключе (или мы знаем, что есть дыры), мы все равно можем получить первый элемент.

Вы можете использовать find(), чтобы получить первый элемент.

Преимущество find() заключается в его эффективности, поскольку он выходит из цикла при достижении первого значения, удовлетворяющего условию (подробнее об этом ниже). (Вы можете настроить условие так, чтобы исключать пустые или нулевые значения)

var firstItem = yourArray.find(x=>x!==undefined);

Я также хотел бы включить filter() в качестве опции, чтобы сначала "исправить" массив в копии, а затем получить первый элемент, сохраняя при этом исходный массив без изменений (без изменений).

Другая причина включить сюда filter() состоит в том, что он существовал до find(), и многие программисты уже использовали его (это ES5 против find(), являющегося ES6).

var firstItem = yourArray.filter(x => typeof x!==undefined).shift();

Предупреждение, что filter() не является эффективным способом (filter() проходит через все элементы) и создает другой массив. Это хорошо для небольших массивов, так как влияние на производительность будет незначительным, например, ближе к использованию forEach.

(Я вижу, что некоторые люди рекомендуют использовать цикл for... in, чтобы получить первый элемент, но я бы рекомендовал не использовать этот метод, потому что for... in не следует использовать для перебора массива, для которого важен порядок индекса, потому что Не гарантируйте порядок, хотя вы можете утверждать, что браузеры в основном соблюдают порядок. Кстати, forEach не решает проблему, как многие предлагают, потому что вы не можете ее сломать, и она будет проходить через все элементы. Было бы лучше использовать простую для цикла и проверки ключа/значения

Обе функции find() и filter() гарантируют порядок элементов, поэтому их можно безопасно использовать, как указано выше.

Ответ 4

Элемент индекса 0 может не существовать, если первый элемент был удален:

let a = ['a', 'b', 'c'];
delete a[0];

for (let i in a) {
  console.log(i + ' ' + a[i]);
}

Ответ 5

Если вы хотите сохранить удобочитаемость, вы всегда можете добавить первую функцию в Array.protoype:

Array.prototype.first = function () {
    return this[0];
};

A, вы можете легко получить первый элемент:

[1, 2, 3].first();
> 1

Ответ 6

Использование ES6 деструктуризации

let [first] = [1,2,3];

Который так же, как

let first = [1,2,3][0];

Ответ 7

Если ваш массив не заселен от нулевого индекса, вы можете использовать Array.prototype.find():

var elements = []
elements[1] = 'foo'
elements[2] = 'bar'

var first = function(element) { return !!element }    
var gotcha = elements.find(first)

console.log(a[0]) // undefined
console.log(gotcha) // 'foo'

Ответ 8

array.find(e => !!e);  // return the first element 

так как "find" возвращает первый элемент, который соответствует фильтру && !!e соответствует любому элементу.

Примечание Это работает только тогда, когда первый элемент не является "фальшивым": null, false, NaN, "", 0, undefined

Ответ 9

Вы можете просто сделать:

let first = array.find(e => true);

Или, если вы заботитесь только о care about истинных элементах (вероятно, о том, что вам нужно):

let first = array.find(Boolean);

Заботясь о удобочитаемости, в то время как не полагаясь на числовые значения, я добавил first() -function к Array.protoype, определив его с помощью Object​.define​Property(), который устраняет недостатки, связанные с непосредственным изменением прототипа встроенного объекта Array (объяснено здесь).

Производительность довольно хорошая (find() останавливается после первого элемента), но она не идеальна и не общедоступна (только ES6). Для получения дополнительной информации прочитайте @Selays answer.

Object.defineProperty(Array.prototype, 'first', {
  value() {
    return this.find(e => true);     // or this.find(Boolean)
  }
});

Затем, чтобы получить первый элемент, который вы можете сделать:

let array = ['a', 'b', 'c'];
array.first();

> 'a'

Фрагмент, чтобы увидеть его в действии:

Object.defineProperty(Array.prototype, 'first', {
  value() {
    return this.find(Boolean);
  }
});

console.log( ['a', 'b', 'c'].first() );

Ответ 10

Попробуйте alert(ary[0]);.

Ответ 11

Только если вы используете underscore.js(http://underscorejs.org/), вы можете:

_.first(your_array);

Ответ 12

Метод, который работает с массивами, а он работает с объектами тоже (будьте осторожны, у объектов нет гарантированного порядка!).

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

// In case of array
var arr = [];
arr[3] = 'first';
arr[7] = 'last';
var firstElement;
for(var i in arr){
    firstElement = arr[i];
    break;
}
console.log(firstElement);  // "first"

// In case of object
var obj = {
    first: 'first',
    last: 'last',
};

var firstElement;

for(var i in obj){
    firstElement = obj[i];
    break;
}

console.log(firstElement) // First;

Ответ 13

Я знаю, что люди, которые приходят с других языков на JavaScript, ищут что-то вроде head() или first(), чтобы получить первый элемент массива, но как вы можете это сделать?

Представьте, что у вас есть массив ниже:

const arr = [1, 2, 3, 4, 5];

В JavaScript вы можете просто сделать:

const first = arr[0];

или более аккуратный, новый способ:

const [first] = arr;

Но вы также можете просто написать функцию как...

function first(arr) {
   if(!Array.isArray(arr)) return;
   return arr[0];
}

При использовании подчеркивания есть список функций, выполняющих ту же функцию, что и вы:

_.first 

_.head

_.take

Ответ 14

Когда имеется несколько совпадений, JQuery.first() используется для извлечения первого элемента DOM, который соответствует селектору css, заданному jquery.

Вам не нужен jQuery для управления массивами javascript.

Ответ 15

Найти первый элемент в массиве с помощью фильтра:

function first<T>(arr: T[], filter: (v: T) => boolean): T {
    let result: T;
    return arr.some(v => { result = v; return filter(v); }) ? result : undefined;
}

В простом javascript:

function first(arr, filter) {
    var result;
    return arr.some(function (v) { result = v; return filter(v); }) ? result : undefined;
}

И аналогично, indexOf:

В typescript:

function indexOf<T>(arr: T[], filter: (v: T) => boolean): number {
    let result: number;
    return arr.some((v, i) => { result = i; return filter(v); }) ? result : undefined;
}

В простом javascript:

function indexOf(arr, filter) {
    var result;
    return arr.some(function (v, i) { result = i; return filter(v); }) ? result : undefined;
}

Ответ 16

В ES2015 и выше, используя деструктуризацию массива:

const arr = [42, 555, 666, 777]
const [first] = arr
console.log(first)

Ответ 17

Вы также можете использовать .get(0):

alert($(ary).first().get(0));

Чтобы получить первый элемент массива.

Ответ 18

Почему бы не учитывать время, когда ваш массив может быть пустым?

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
first = (array) => array.length ? array[0] : 'no items';
first(ary)
// output: first

var ary = [];
first(ary)
// output: no items

Ответ 19

Еще один для тех, кто занимается только правдивыми элементами

ary.find(Boolean);

Ответ 20

Используйте это для разделения символа в javascript.

var str = "boy, girl, dog, cat";
var arr = str.split(",");
var fst = arr.splice(0,1).join("");
var rest = arr.join(",");

Ответ 21

Предыдущие примеры хорошо работают, когда индекс массива начинается с нуля. thomax answer не полагался на индекс, начинающийся с нуля, но полагался на Array.prototype.find, к которому у меня не было доступа. Следующее решение, использующее jQuery $.each, хорошо работало в моем случае.

let haystack = {100: 'first', 150: 'second'},
    found = null;

$.each(haystack, function( index, value ) {
    found = value;  // Save the first array element for later.
    return false;  // Immediately stop the $.each loop after the first array element.
});

console.log(found); // Prints 'first'.

Ответ 22

Вы можете сделать это легко с помощью lodash _.head.

var arr = ['first', 'second', 'third', 'fourth', 'fifth'];
console.log(_.head(arr));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

Ответ 23

Просто используйте ary.slice(0,1).pop();

В

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];

console.log("1º "+ary.slice(0,1).pop());
console.log("2º "+ary.slice(0,2).pop());
console.log("3º "+ary.slice(0,3).pop());
console.log("4º "+ary.slice(0,4).pop());
console.log("5º "+ary.slice(0,5).pop());
console.log("Last "+ary.slice(-1).pop());

Ответ 24

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
alert(Object.values(ary)[0]);

Ответ 25

@NicoLwk Вы должны удалить элементы с помощью сплайсинга, которые вернут ваш массив. Итак:

var a=['a','b','c'];
a.splice(0,1);
for(var i in a){console.log(i+' '+a[i]);}

Ответ 26

Объявите прототип, чтобы получить элемент first array как:

Array.prototype.first = function () {
   return this[0];
};

Затем используйте его как:

var array = [0, 1, 2, 3];
var first = array.first();
var _first = [0, 1, 2, 3].first();

Или просто (:

first = array[0];

Ответ 27

Если вы привязываете функции вида к массиву, например.

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() (без карты вы будете изменять оригинал. В этом случае btw я предложит версию ..[0].

Ответ 28

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];

console.log(Object.keys(ary)[0]);

Создайте любой массив объектов (req), а затем просто Object.keys(req)[0] выберите первый ключ в массиве Object.

Ответ 29

Вы также можете использовать этот открытый компонент array-first, чтобы получить первый элемент любого массива Javascript.

Примеры:

first([1, 2, 3]) // => 1
first(['a', 'b', 'c']) // => 'a'

Вы также можете попробовать этот пакет NPM.

Ответ 30

@thomax-ответ довольно хорош, но будет терпеть неудачу, если первый элемент в массиве будет false или false-y (0, пустая строка и т.д.). Лучше просто вернуть true для чего-либо другого, кроме undefined:

const arr = [];
arr[1] = '';
arr[2] = 'foo';

const first = arr.find((v) => { return (typeof v !== 'undefined'); });
console.log(first); // ''