Como você obtém o primeiro elemento de uma matriz como esta:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
Eu tentei isso:
alert($(ary).first());
Mas voltaria [object Object]
. Então, eu preciso obter o primeiro elemento da matriz que deve ser o elemento 'first'
.
javascript
jquery
arrays
MacMac
fonte
fonte
Respostas:
como isso
fonte
var a = []; a[7] = 'foo'; alert(a[0]);
Por que você está jQuery-ifying uma matriz JavaScript de baunilha? Use JavaScript padrão!
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
Além disso,
Fonte , cortesia de bobince
fonte
Algumas das maneiras abaixo para diferentes circunstâncias.
Na maioria dos casos normais, a maneira mais simples de acessar o primeiro elemento é
mas isso exige que você verifique se [0] realmente existe.
Existem casos do mundo real em que você não se importa com a matriz original e não deseja verificar se o índice existe, deseja obter apenas o primeiro elemento ou a linha indefinida.
Nesse caso, você pode usar o método shift () para obter o primeiro elemento, mas tenha cuidado para que esse método modifique a matriz original (remove o primeiro item e o retorna). Portanto, o comprimento de uma matriz é reduzido em um. Este método pode ser usado em casos em linha onde você só precisa obter o primeiro elemento, mas não se importa com a matriz original.
O importante é saber que os dois acima são apenas uma opção se o seu array começar com um índice [0].
Há casos em que o primeiro elemento foi excluído, por exemplo, exclua yourArray [0] deixando sua matriz com "buracos". Agora o elemento em [0] é simplesmente indefinido, mas você deseja obter o primeiro elemento "existente". Eu já vi muitos casos reais disso.
Portanto, supondo que não tenhamos conhecimento da matriz e da primeira chave (ou sabemos que existem buracos), ainda podemos obter o primeiro elemento.
Você pode usar find () para obter o primeiro elemento.
A vantagem de find () é sua eficiência, pois sai do loop quando o primeiro valor que satisfaz a condição é atingido (mais sobre isso abaixo). (Você pode personalizar a condição para excluir também valores nulos ou outros valores vazios)
Eu também gostaria de incluir filter () aqui como uma opção para "fixar" primeiro a matriz na cópia e depois obter o primeiro elemento, mantendo intacta a matriz original (não modificada).
Outro motivo para incluir filter () aqui é que ele existia antes de find () e muitos programadores já o estavam usando (é o ES5 contra o find () sendo o ES6).
Aviso que filter () não é realmente uma maneira eficiente (filter () percorre todos os elementos) e cria outra matriz. É bom usar em pequenas matrizes, pois o impacto no desempenho seria marginal, mais próximo do uso do forEach, por exemplo.
(Vejo algumas pessoas sugerindo o uso de loop for ... in para obter o primeiro elemento, mas eu recomendaria esse método para ... in não deve ser usado para iterar sobre uma matriz em que a ordem do índice é importante porque não ' Para garantir a ordem, embora você possa argumentar que os navegadores respeitam principalmente a ordem. A propósito, o forEach não resolve o problema, como muitos sugerem, porque você não pode quebrá-lo e ele percorrerá todos os elementos. loop e verificando a chave / valor
Ambos find () e filter () garantem a ordem dos elementos, portanto, são seguros para usar como acima.
fonte
yourArray.map(n=>n).shift()
lo, retornará o primeiro item sem modificar o original ... não sei se é a melhor maneira, mas se você agrupar uma matriz com .map (). Filter (). Some (). Shift () está tudo bem .. i de outro modo seria usaryourArray[0]
O elemento do índice 0 pode não existir se o primeiro elemento tiver sido excluído:
Melhor maneira de obter o primeiro elemento sem o jQuery:
fonte
Usando a desestruturação do ES6
Qual é o mesmo que
fonte
Se você deseja preservar a legibilidade, sempre pode adicionar uma primeira função ao
Array.protoype
:A, então você pode recuperar facilmente o primeiro elemento:
fonte
.first()
melhor do que fazer[0]
?1
.first
é inequívoco nesse caso.Você pode apenas usar
find()
:Ou se você deseja o primeiro elemento, mesmo que falso :
Indo a milha extra:
Se você se preocupa com a legibilidade, mas não quer contar com incidências numéricas, pode adicionar uma
first()
função -fArray.protoype
definindo-a com aObject.defineProperty()
qual atenua as armadilhas da modificação direta do protótipo do objeto Array incorporado ( explicado aqui ).O desempenho é muito bom (
find()
para após o primeiro elemento), mas não é perfeito ou universalmente acessível (somente ES6). Para mais informações, leia a resposta @Selays .Em seguida, para recuperar o primeiro elemento, você pode fazer:
Snippet para vê-lo em ação:
fonte
find()
?find()
faz parte do idioma há muito tempo. É a razão pela qual o snippet acima funciona.first()
-method da línguaSe não for garantido que sua matriz seja preenchida a partir do índice zero, você poderá usar
Array.prototype.find()
:fonte
!!element
pois ele pula valores falsos. Eu recomendo usarfind()
desta maneira:sparse.find((_, index, array) => index in array);
desde que "encontre" retorne o primeiro elemento que corresponde ao filtro &&
!!e
corresponde a qualquer elemento.Nota Isto funciona apenas quando o primeiro elemento não é um "Falsas":
null
,false
,NaN
,""
,0
,undefined
fonte
array.find(() => true);
? Isso permite que você faça[false].find(() => true)
também..find(value => true)
é claro, está funcionando como o esperado ... mas, honestamente, se você deseja um código mais limpo e para continuar digitando o texto datilografado, use a desestruturação .Tente
alert(ary[0]);
.fonte
Somente no caso de você estar usando underscore.js ( http://underscorejs.org/ ), você poderá:
fonte
Eu sei que pessoas que vêm de outros idiomas para JavaScript, procurando algo como
head()
oufirst()
para obter o primeiro elemento de uma matriz, mas como você pode fazer isso?Imagine que você tem a matriz abaixo:
Em JavaScript, você pode simplesmente fazer:
ou uma maneira mais limpa, a maneira mais nova é:
Mas você também pode simplesmente escrever uma função como ...
Se você estiver usando sublinhado, há uma lista de funções fazendo a mesma coisa que você procura:
fonte
Método que funciona com matrizes e também com objetos (cuidado, os objetos não têm uma ordem garantida!).
Prefiro mais esse método, porque a matriz original não é modificada.
fonte
No ES2015 e acima, usando a destruição de matriz:
fonte
Outro para aqueles preocupados apenas com elementos da verdade
fonte
Encontre o primeiro elemento em uma matriz usando um filtro:
Em texto datilografado:
Em javascript simples:
E da mesma forma, indexOf:
Em texto datilografado:
Em javascript simples:
fonte
Quando há várias correspondências, o .first () do JQuery é usado para buscar o primeiro elemento DOM que corresponde ao seletor de css fornecido ao jquery.
Você não precisa do jQuery para manipular matrizes javascript.
fonte
Por que não considerar os horários em que sua matriz pode estar vazia?
fonte
Apenas use
ary.slice(0,1).pop();
No
array.slice (START, END) .pop ();
fonte
ary[0]
?Você também pode usar .get (0):
Para obter o primeiro elemento da matriz.
fonte
Use isso para dividir caracteres em javascript.
fonte
Os exemplos anteriores funcionam bem quando o índice da matriz começa em zero. A resposta da thomax não se baseou no índice começando em zero, mas no
Array.prototype.find
qual eu não tinha acesso. A seguinte solução usando jQuery $ .each funcionou bem no meu caso.fonte
Você pode fazer isso por lodash
_.head
tão facilmente.fonte
arr[0]
que você pode ver aqui, e é por isso que eu desencorajo fortemente o uso de uma biblioteca gigantesca como o lodash para uma tarefa tão pequena.fonte
@NicoLwk Você deve remover elementos com emenda, que mudará sua matriz de volta. Assim:
fonte
Declare um protótipo para obter o primeiro elemento da matriz como:
Em seguida, use-o como:
Ou simplesmente (:
fonte
Se você estiver encadeando funções de exibição para o array, por exemplo,
array.map(i => i+1).filter(i => i > 3)
E deseja o primeiro elemento após essas funções, você pode simplesmente adicionar um
.shift()
item que não modifica o originalarray
, é uma maneira melhorarray.map(i => i+1).filter(=> i > 3)[0]
Se você deseja o primeiro elemento de uma matriz sem modificar o original, você pode usar
array[0]
ouarray.map(n=>n).shift()
(sem o mapa você modificará o original. Nesse caso, por exemplo, sugiro a..[0]
versão.fonte
Faça qualquer array de objetos (
req
) e, em seguida, simplesmenteObject.keys(req)[0]
escolha a primeira chave na matriz de objetos.fonte
A resposta de @thomax é muito boa, mas falhará se o primeiro elemento da matriz for falso ou falso-y (0, string vazia etc.). Melhor simplesmente retornar true para algo diferente de indefinido:
fonte
ES6 fácil:
fonte
[false, 0, null, undefined, '', 'last'].find(v => v)
a.find(value => true)
não descartará nenhum valor. Ainda assim, não recomendo o uso de find para obter o primeiro item.