si j'ai un tableau comme:
var myArray = [
{
'color':'red',
'name': 'redName'
},
{
'color':'blue',
'name': 'blueName'
},
{
'color':'green',
'name': 'greenName'
},
{
'color':'yellow',
'name': 'yellowName'
},
];
Comment puis-je obtenir l'index de dire, "bleu"?
for(var i = 0; i < myArray.length; i++) {
if(myArray[i].color === 'blue') {
return i;
}
}
Il n'y a pas de méthode "propre" sauf si vous souhaitez impliquer une bibliothèque tierce. Underscore est un bon pour des choses comme ça.
Si vous utilisez déjà ECMAScript 5 dans votre code, vous pouvez l'utiliser:
myArray
.map(function (element) {return element.color;})
.indexOf('blue');
Notez que la prise en charge de ces fonctions est assez limitée (elles ne fonctionnent pas sur Internet Explorer 8).
De plus, si vous êtes dans le futur et que vous utilisez ES6, vous pouvez le faire:
myArray.map((el) => el.color).indexOf('blue');
C'est le même que ci-dessus, mais plus petit.
Je sais que c'est très vieux mais Javascript es6 a une méthode géniale Array.prototype.findIndex () , vous pouvez donc faire:
let index = myArray.findIndex((item) => item.color === 'blue');
// value of index will be "1"
Ce n'est pas un tableau multidimensionnel (ni même un tableau dentelé, qui est utilisé à la place des tableaux multidimensionnels en Javascript, car ils n'existent pas). C'est un tableau d'objets.
Vous pouvez parcourir les éléments du tableau:
var index;
for (var i = 0; i < myArray.length; i++) {
if (myArray[i].color == 'blue') {
index = i;
break;
}
}
Maintenant, la variable index
contient la valeur 1
, avec votre exemple donné.
Je suppose que, d'après votre exemple, vous voulez dire "1"? Voici une fonction pour vous ...
<script type='text/javascript'>
var myArray = [
{
'color':'red',
'name': 'redName'
},
{
'color':'blue',
'name': 'blueName'
},
{
'color':'green',
'name': 'greenName'
},
{
'color':'yellow',
'name': 'yellowName'
},
];
function getIndexOf(a,v) {
var l = a.length;
for (var k=0;k<l;k++) {
if (a[k].color==v) {
return k;
}
}
return false;
}
alert (getIndexOf(myArray,'blue'));
</script>
Vous pouvez utiliser la méthode .findIndex ()
Dans ton cas
var findeMe = "blue";
myArray.findIndex(function(row){
return row.color == findMe;
});
J'espère que ça aide.
Par exemple, comme ceci:
Array.prototype.objIndexOf = function(val) {
var cnt =-1;
for (var i=0, n=this.length;i<n;i++) {
cnt++;
for(var o in this[i]) {
if (this[i].hasOwnProperty(o) && this[i][o]==val) return cnt;
}
}
return -1;
}
var myArray = [
{
'color':'red',
'name': 'redName'
},
{
'color':'blue',
'name': 'blueName'
},
{
'color':'green',
'name': 'greenName'
},
{
'color':'yellow',
'name': 'yellowName'
},
];
alert(myArray.objIndexOf('blue'))
Parcourez le tableau en recherchant la valeur à l'intérieur de chaque objet élément. Le JavaScript brut ne vous donne pas beaucoup de choses à travailler.