J'ai un tableau
var arr = [{name:"Steve",toppedIn:"Biology"},
{name:"Carol",toppedIn:"Maths"},
{name:"Steve",toppedIn:"Chemistry"}];
4 Réponses :
dans JS, vous devez utiliser P>
Array [Array.length - 1] P>
Pour accéder au dernier élément p>
Je ne pense pas que l'OP recherche le dernier élément du tableau mais le dernier élément satisfaisant une condition.
Je sympathise, la question est elle-même une énigme à résoudre avant de comprendre ce qu'elle demande
Inverser d'abord le tableau, puis vérifiez si la valeur a été trouvée ou non, puis soustrayez l'index inversé du dernier index de la matrice pour obtenir la réponse correcte.
p>
var arr = [{name:"Steve",toppedIn:"Biology"},{name:"Carol",toppedIn:"Maths"},{name:"Steve",toppedIn:"Chemistry"}];
const lastIndexOfName = name => {
let index = [...arr].reverse().findIndex(person => person.name == name);
console.log(index);
console.log(arr.length);
return index >= 0 ? arr.length - 1 - index : index;
}
console.log(lastIndexOfName("Steve"));Où avez-vous inverser le tableau?
@Sebastianspeitel, hah était sur le point de lui demander la même chose que la réponse a été mise à jour avec moi qui me remarque .. Jack Cela semble presque que vous l'avez fait récemment .. :)
@VitaliyterZiev a fait ce qui a récemment été mis à jour ma réponse?
Vous avez posté votre solution quelques minutes après QEustion de OP, alors je pensais que vous aviez que celui-ci prêt à compter quelque part. :)
Nope - savait juste comment le faire.
lastIndex = (arr.length-1) - arr.reverse().findIndex(x=>x.name==="Steve"); arr.reverse(); This one also works but i dont know which one is more performant.
J'ai fait une enveloppe simplifiée pour cette question:
p>
var arr = [ {name:"Steve",toppedIn:"Biology" } // 0 Steve
, {name:"Carol",toppedIn:"Maths" } // 1
, {name:"Carol",toppedIn:"Maths" } // 2
, {name:"Steve",toppedIn:"Chemistry"} // 3 Steve
, {name:"Carol",toppedIn:"Maths" } // 4
, {name:"Carol",toppedIn:"Maths" } // 5
, {name:"Steve",toppedIn:"Chemistry"} // 6 <-- last Steve
, {name:"Carol",toppedIn:"Maths" } // 7
, {name:"Carol",toppedIn:"Maths" } // 8
];
Array.prototype.FindLastIndex = function( CallFunction ) {
var r = -1, t = Object(this);
for (let i=t.length;i-->0;) {
if (CallFunction(t[i])) {
r=i;
break
}
}
return r
};
console.log ('last Steve is: index= ', arr.FindLastIndex(a=>a.name=='Steve') ) // 6
Vous recherchez l'index ou le dernier objet?
@Henslersoftware, je pense qu'il recherche le dernier index d'élément satisfaisant une condition, mais il n'est pas clair de la question de l'OP.
@Henslersoftware Dernier index
La fonction FINDIDIDEX si utilisé sans argument renvoie une erreur. Qu'est-ce que tu racontes?
@aeshnakashyap s'il vous plaît voir ma réponse ci-dessous.
Je viens de donner le nom de la fonction dans la question N'EST PAS la mise en œuvre .In FindIndrex Case je passe une fonction qui a un élément et l'index et renvoyer l'index lorsque l'élément de tableau correspond à l'élément que je veux @misterjojo
J'espère que vous allez lire ma réponse, il me semble le plus rapide et le plus utile de tous ceux que j'ai vus ici