2017-04-17 1 views
0

J'ai un tableau deComment utiliser correctement indexOf() avec plusieurs éléments?

var clickedImages = Session.get('clickedImages'); 
clickedImages = clickedImages.map(function(a) {return a.imageId;}); 

console.log("clickedImages Ids are: " ,...clickedImages); 

Ce qui donne:

clickedImages Ids sont: TaTg6hf3Gok5NsWYp XzGxS3LDtJ4DrXSdc 8CdapJoeSxSScHKFs

var TotalOfallImageIds = buyList.find().fetch().map(function(u) { return u._id; }); 
console.log(TotalOfallIds); 

Ce qui donne:

["yzML7ZLvkWkjBBvq5", "XzGxS3LDtJ4DrXSdc", "TaTg6hf3Gok5NsWYp", "8CdapJoeSxSScHKFs"] 

Cependant, quand je lance le code ci-dessous, pourquoi ai-je un faux?

(TotalOfallImageIds.indexOf(clickedImages) > -1); 

Le code ci-dessus, on obtient: faux

Comment indexOf() dois-je utiliser correctement avec plusieurs éléments?

+0

double possible de [Vérifiez si tous les éléments dans un tableau est dans un second réseau] (http://stackoverflow.com/questions/8628059/check-if-every-element-in-one-array-is-in-a-second-array) – Santi

+0

En boucle sur les images cliquées et appelez 'indexOf' avec chacune des leur. – Barmar

+0

Que voulez-vous 'TotalOfallImageIds.indexOf (clickedImages)' faire? Plus précisément, qu'est-ce que cela signifie de vérifier? –

Répondre

0

.indexOf est pour comparer un élément, donc au lieu vous devez itérer sur un tableau et indexOf avec l'autre

var allClicked = true; 

for (var i = 0; i < clickedImages.length; i++) { 
    var clickedImg = clickedImages[i]; 
    allClicked = TotalOfallImageIds.indexOf(clickedImg) > -1 && allClicked;  
} 
1

Parce qu'il n'y a pas d'entrée dans TotalOfallImageIds qui est === le tableau d'ID d'image cliqués référencées par clickedImages. Aucun tableau n'est jamais === à une chaîne (parce que le résultat de === est toujours false lorsque les opérandes ne sont pas du même type). indexOf utilise === pour les comparaisons.