Quelle est la syntaxe pour je veux trouver ' indexof () code> pour passer via une matrice multidimensionnelle?
Par exemple:
a code>' et faire quelque chose avec '
b code>'. Mais cela ne fonctionne pas ... Comme cette méthode doit être itérative elle-même, je ne présume pas d'une autre itération serait une bonne chose à faire. Actuellement, je simulez cela en utilisant 2 tableaux simples, mais je suppose que cela devrait également travailler aussi ... p> p>
5 Réponses :
JavaScript n'a pas de matrices multidimensionnelles en tant que telles, donc Votre seule option consiste à rechercher manuellement, itérant sur x code> est simplement un tableau. En outre, l'index code> méthode de matrice n'est pas prise en charge dans tous les navigateurs, notamment IE (jusqu'à la version 7, au moins), uniquement en cours d'introduction dans JavaScript 1.6. P>
x code> et examinant chaque élément à tour de rôle. P>
sauf si vous voulez conserver la commande, il est beaucoup plus simple d'utiliser un dictionnaire: Vous pouvez toujours itérer sur les touches, bien que la commande soit indéfinie: P> for (var key in x) {
alert(x[key]);
}
Utilisez X [A] au lieu de X.A. "A" n'est pas le nom de la clé, mais la variable qui détient la clé.
x = [1,2], b = {one:function(){alert('gj')}}, c = x.push(b); x[ x.indexOf( b ) ]['one']()
Eh bien, vous avez dû le faire différemment parce que je le faisais. J'ai noté que ce seulement i> fonctionne sur des tableaux qui sont commandés numériquement et ont une propriété de longueur, non sur "multidimensionnels" ou dictionnaires.
Remarque - Vous devez également avoir une référence à l'objet d'origine pour la référence que vous alliez à 'B', un objet similaire avec des propriétés similaires est toujours différent.
Vous pouvez utiliser un objet (ou un dictionnaire) comme Philippe Leybaert suggéré. Qui permettra d'accéder rapidement aux éléments: mais si vous insistez sur l'utilisation de indexof code>, il y a toujours un moyen, aussi moche c'est: P>
var x = [];
var o = Object(a); // "cast" to an object
o.b = b; // attach value
x.push(o);
alert(x.indexOf(a)); // will give you the index
alert(x[1].b); // access value at given index
Simplement: indexof () code> ne fonctionne pas de cette façon. Cela pourrait fonctionner si vous avez fait quelque chose comme ceci:
Array.prototype.indexOf0 =
function(a){for(i=0;i<this.length;i++)if(a==this[i][0])return i;return null;};
var x = [];
// do something
x.push([a,b]);
x.indexOf0(a); //=> 0
Essayez-vous de créer un dictionnaire? Pourquoi ne pas utiliser un objet?
{} code>
Est-ce que l'une des quatre suggestions de codage cela fonctionne différemment pour vous? Juste curieux.