Javascript 2d array indexOf
J'ai un tableau 2d comme ceci:
var arr = [[2,3],[5,8],[1,1],[0,9],[5,7]];
Chaque indice magasins intérieure d'un tableau contenant les coordonnées de certains de ses éléments.
Comment puis-je utiliser Array.indexOf()
de vérifier si les nouveaux générés ensemble de coordonnées est déjà contenue dans le arr
? Je veux pousser dans arr
si seulement le système de coordonnées n'est PAS un doublon.
Voici ma tentative qui n'a pas fonctionné:
if (arr.indexOf([x, y]) == -1) {
arr.push([x, y]);
}
Il ressemble indexOf()
ne fonctionne pas pour la 2d tableaux...
source d'informationauteur phoeberesnik | 2014-07-24
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser indexOf faire compliqué tableaux (à moins que vous sérialiser tout en faisant de chaque coordonnée dans des chaînes de caractères), vous aurez besoin d'utiliser une boucle for (ou pendant) à la recherche de coordonnées de ce tableau en supposant que vous savez le format du tableau (dans ce cas, il est en 2d).
Cette mise en œuvre des boucles et saisit chaque valeur. Si vous vous souciez de performance que vous pouvez faire plus de choses compliquées comme le tri du tableau original par le premier index, puis en utilisant une recherche binaire sur le premier index.
Une autre façon est de seau de la première coordonnée de chaque élément d'un tableau dans un objet (comme une table de hachage (hashtable) et d'un seau à la deuxième valeur dans chacun de ces compartiments à réduire les temps de recherche; plus d'infos ici http://en.wikipedia.org/wiki/Bucket_sort.
Sinon, c'est probablement assez bon pour ce que vous avez besoin.
Travail js fiddle
Beaucoup plus d'un hacky façon qu'un simple indice de l', mais il fonctionne
Parce que c'est un Tableau à deux dimensions, vous aurez besoin d'une étude pour la boucle.
Pas une réponse complète juste une note de côté qui peuvent vous aider.
Utilisation Lodash
Cette méthode vous permettra d'obtenir une position d'une valeur dans un délai de 2 dimensions tableau
Comme mentionné plus tôt, vous avez besoin d'une boucle imbriquée pour voyager à travers le tableau.
vous pouvez utiliser cette méthode,