1
votes

comparer un tableau unidimensionnel avec un tableau multidimensionnel en javascript

J'utilise javascript pour comparer un seul tableau et un tableau multidimensionnel. Ici, je veux comparer ces 2 tableaux et la valeur correspondante doit être affichée.

  • arr [1,2,3] valeur à rechercher dans le tableau multidimensionnel "md2".

Ceci est mon code :: j'ai pris un seul tableau et un autre comme tableau multidimensionnel

var arr = [1,2,3];
var md2 = [[23,8,2],[1,5,8],[1,2,3],[8,5,2]];
for(var j=0; j<md2.length ; j++){
  if(arr == md2[j]){
    console.log(arr + " ... " + md2[j]);
  }
}

O / P obligatoire: - [1 , 2,3] doit correspondre et doit être affiché dans la console


1 commentaires

4 Réponses :


0
votes

Vous pouvez utiliser les méthodes .find () et .every () pour trouver un tableau dans un tableau multidimensionnel:

var arr1 = [1,2,3];
var arr2 = [1,2,5];
var md2 = [[23,8,2],[1,5,8],[1,2,3],[8,5,2]];

var searchAndPrint = (a1, a2) => {
  let arr = a1.find(a => a.every((v, i) => v === a2[i]));
  
  if(arr)
    console.log(arr);
  else
    console.log("No Results");
};

searchAndPrint(md2, arr1);
searchAndPrint(md2, arr2);


1 commentaires

Une solution plus courte (mais peut-être moins performante), pourrait être de forcer les tableaux dans une chaîne, puis de les comparer, au lieu d'utiliser chaque



0
votes

Vous ne pouvez pas comparer les tableaux dans js. Si vous voulez comparer des tableaux simples, vous pouvez les convertir en string pour comparer. Cette méthode n'est pas applicable aux tableaux contenant des objets .

var arr = [1,2,3];
var md2 = [[23,8,2],[1,5,8],[1,2,3],[8,5,2]];
for(var j=0; j<md2.length ; j++){
  if(arr.toString() === md2[j].toString()){
    console.log(arr + " ... " + md2[j]);
  }
}


0 commentaires

0
votes

Vous pouvez utiliser JSON.stringify pour comparer les tableaux.

var arr = [1,2,3];
var md2 = [[23,8,2],[1,5,8],[1,2,3],[8,5,2]];
for(var j=0; j<md2.length ; j++){
  if(JSON.stringify(arr) === JSON.stringify(md2[j])){
    console.log(arr + " ... " + md2[j]);
  }
}


0 commentaires

0
votes

Pour vérifier, vous devez vérifier directement la longueur et les éléments, car vous n'avez pas la même référence d'objet.

var arr = [1, 2, 3],
    md2 = [[23, 8, 2], [1, 5, 8], [1, 2, 3], [8, 5, 2]];
    
console.log(md2.some(a => arr.length === a.length && a.every((v, i) => v === arr[i])));


0 commentaires