it-swarm.com.ru

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

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

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

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

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

Но он вернул бы [object Object]

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

143
MacMac

как это

alert(ary[0])
248
John Hartsock

Почему вы используете jQuery-массив Vanilla JavaScript? Используйте стандартный JavaScript!

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

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array

Также,  needs more jQuery

Источник , любезно предоставлен bobince

183
Matt Ball

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

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

Лучший способ получить первый элемент без jQuery:

function first(p){for(var i in p)return p[i];}
first(a);
46
NicoLwk

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

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

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

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

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

yourArray.shift()
40
Selay

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

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

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

let first = [1,2,3][0];
23
Flavien Volken

Если ваш массив не заполнен с нуля индекса, вы можете использовать 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'
17
thomax
array.find(e => !!e);  // return the first element 

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

Примечание Это работает только в том случае, если первый элемент не является «ложным»: null, false, NaN, "", 0, undefined

11
Abdennour TOUMI

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

9
thejh

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

_.first(your_array);
7
pastullo

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

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

// 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;
5
Mārtiņš Briedis

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

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

4
letronje

Найдите первый элемент в массиве, используя фильтр:

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;
}
4
Corey Alix

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

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

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

2
Michael Pawlowsky

Я знаю, что люди, которые приходят с других языков в 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
2
Alireza

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

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

2
Vik

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

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

Или, если вы заботитесь только об истинных элементах:

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

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

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

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

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

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

> 'a'

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

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

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

Предыдущие примеры хорошо работают, когда индекс массива начинается с нуля. ответ thomax не полагался на индекс, начинающийся с нуля, но полагался на 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'.
1
Matthew

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

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
1
NathanQ

Вы можете сделать это с помощью 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>

1
Yi-Ting Liu
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];

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

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

0
Anuga

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

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].

0
Michael J. Zoidl

Используйте это, чтобы разделить символ в JavaScript.

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

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

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];
0
ozhanli
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
alert(Object.values(ary)[0]);
0
Merak Marey

Просто используйте 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());

array.slice (начало, конец) .pop ();

0
Guilherme HS

Ответ @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); // ''
0
derikb

@NicoLwk Вы должны удалить элементы со сращиванием, что сместит ваш массив обратно. Так: 

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