Comment obtenez-vous le premier élément d'un tableau:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
J'ai essayé ceci:
alert($(ary).first());
Mais il renverrait [object Object]
.
Donc, je dois obtenir le premier élément du tableau qui devrait être l'élément first
.
comme ça
alert(ary[0])
Pourquoi êtes-vous jQuery-ifying un tableau JavaScript Vanilla? Utilisez JavaScript standard!
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
alert(ary[0]);
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
L'élément d'indice 0 peut ne pas exister si le premier élément a été supprimé
Prouvez-le dans la console de votre navigateur:
var a=['a','b','c'];
delete a[0];
for(var i in a){console.log(i+' '+a[i]);}
Meilleure façon d'obtenir le premier élément sans jQuery:
function first(p){for(var i in p)return p[i];}
first(a);
Si vous voulez conserver la lisibilité, vous pouvez toujours ajouter une première fonction au Array.protoype
:
Array.prototype.first = function () {
return this[0];
};
Ensuite, vous pouvez facilement récupérer le premier élément:
[1, 2, 3].first();
> 1
Vous pouvez utiliser la méthode shift () pour obtenir le premier élément, mais veillez à ce que cette méthode modifie le tableau d'origine (supprime le premier élément et le renvoie). Par conséquent, la longueur d'un tableau est réduite de un. Cette méthode peut être utilisée dans les cas où vous avez juste besoin d’obtenir le premier élément, mais vous ne vous souciez pas du tableau d’origine.
yourArray.shift()
Utilisation de la déstructuration ES6
let [first] = [1,2,3];
Quel est le même que
let first = [1,2,3][0];
Si la constitution de votre tableau à partir de l'index zéro n'est pas garantie, vous pouvez utiliser 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'
array.find(e => !!e); // return the first element
puisque "trouver" retourne le premier élément qui correspond au filtre && !!e
correspond à n'importe quel élément.
Remarque Ceci fonctionne uniquement lorsque le premier élément n'est pas un "Falsy": null
, false
, NaN
, ""
, 0
, undefined
Essayez alert(ary[0]);
.
Seulement si vous utilisez underscore.js ( http://underscorejs.org/ ), vous pouvez faire:
_.first(your_array);
Méthode qui fonctionne avec les tableaux}, et fonctionne avec les objets aussi (attention, les objets n'ont pas d'ordre garanti!).
Je préfère cette méthode car le tableau d'origine n'est pas modifié.
// 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;
Lorsqu'il existe plusieurs correspondances, la méthode .first () de JQuery est utilisée pour extraire le premier élément DOM correspondant au sélecteur css attribué à jquery.
Vous n'avez pas besoin de jQuery pour manipuler des tableaux javascript.
Recherchez le premier élément d'un tableau à l'aide d'un filtre:
function first<T>(arr: T[], filter: (v: T) => boolean): T {
let result: T;
return arr.some(v => { result = v; return filter(v); }) ? result : undefined;
}
En clair javascript:
function first(arr, filter) {
var result;
return arr.some(function (v) { result = v; return filter(v); }) ? result : undefined;
}
Et pareillement, indexOf:
Dans 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;
}
En clair javascript:
function indexOf(arr, filter) {
var result;
return arr.some(function (v, i) { result = i; return filter(v); }) ? result : undefined;
}
Vous pouvez aussi utiliser .get (0):
alert($(ary).first().get(0));
Pour obtenir le premier élément du tableau.
Je sais que les personnes qui viennent d'autres langages en JavaScript cherchent quelque chose comme head()
ou first()
pour obtenir le premier élément d'un tableau, mais comment pouvez-vous le faire?
Imaginez que vous ayez le tableau ci-dessous:
const arr = [1, 2, 3, 4, 5];
En JavaScript, vous pouvez simplement faire:
const first = arr[0];
ou une façon plus propre, la nouvelle manière est:
const [first] = arr;
Mais vous pouvez aussi simplement écrire une fonction comme ...
function _first(arr) {
if(!Array.isArray(arr)) return;
return arr[0];
}
Si vous utilisez un trait de soulignement, il existe une liste de fonctions faisant la même chose que vous recherchez:
_.first
_.head
_.take
Dans ES2015 et versions ultérieures, à l'aide de la déstructuration de tableau:
const arr = [42, 555, 666, 777]
const [first] = arr
console.log(first)
Vous pouvez juste faire:
let first = array.find(() => true);
Ou si vous ne vous souciez que d'éléments de vérité:
let first = array.find(e => e);
Se soucier de lisibilité while ne pas compter sur des incidences numériques J'ai ajouté une fonction first()
- à Array.protoype
en le définissant avec Object.defineProperty()
que atténue les pièges de modification du prototype d'objet Array intégré directement ( expliqué ici ).
Les performances sont plutôt bonnes (find()
s'arrête après le premier élément), mais elles ne sont ni parfaites ni universellement accessibles (ES6 uniquement). Pour plus d'informations, lisez @Selays answer .
Object.defineProperty(Array.prototype, 'first', {
value() {
return this.find(() => true); // or this.find(e => e)
}
});
Ensuite, pour récupérer le premier élément, vous pouvez faire:
let array = ['a', 'b', 'c'];
array.first();
> 'a'
Snippet pour le voir en action:
Object.defineProperty(Array.prototype, 'first', {
value() {
return this.find(() => true);
}
});
console.log( ['a', 'b', 'c'].first() );
Les exemples précédents fonctionnent bien lorsque l'index de tableau commence à zéro. La réponse de thomax ne s'est pas appuyée sur l'indice commençant à zéro, mais sur Array.prototype.find
auquel je n'avais pas accès La solution suivante utilisant jQuery $ .each a bien fonctionné dans mon cas.
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'.
Pourquoi ne pas comptabiliser les fois où votre tableau pourrait être vide?
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
Vous pouvez le faire en lodash_.head
si facilement.
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>
Un autre pour ceux qui ne s'intéressent qu'aux éléments véridiques
ary.find(Boolean);
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
console.log(Object.keys(ary)[0]);
Créez n'importe quel tableau Object (req
), puis faites simplement Object.keys(req)[0]
pour choisir la première clé du tableau Object.
Utilisez cette option pour diviser un caractère en javascript.
var str = "boy, girl, dog, cat";
var arr = str.split(",");
var fst = arr.splice(0,1).join("");
var rest = arr.join(",");
Déclarez un prototype pour obtenirfirst arrayelement comme:
Array.prototype.first = function () {
return this[0];
};
Ensuite, utilisez-le comme:
var array = [0, 1, 2, 3];
var first = array.first();
var _first = [0, 1, 2, 3].first();
Ou simplement (:
first = array[0];
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
alert(Object.values(ary)[0]);
Il suffit d'utiliser ary.slice(0,1).pop();
Dans
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 (START, END) .pop ();
La réponse de @thomax est assez bonne, mais échouera si le premier élément du tableau est false ou false-y (0, chaîne vide, etc.). Mieux vaut tout simplement revenir vrai pour autre chose que non défini:
const arr = [];
arr[1] = '';
arr[2] = 'foo';
const first = arr.find((v) => { return (typeof v !== 'undefined'); });
console.log(first); // ''
@NicoLwk Vous devriez supprimer les éléments avec l'épissure, cela décalerait votre tableau. Alors:
var a=['a','b','c'];
a.splice(0,1);
for(var i in a){console.log(i+' '+a[i]);}