Problème de tableaux

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour, j'ai un petit soucis avec des tableaux en JS. Je souhaite faire une manipulation légèrement complexe sur deux tableaux, et même en réfléchissant je n'est pas la moindre idée de comment la résoudre. Voilà le code (il ne représente pas mon code réel, j'ai mis en scène le problème pour le rendre plus compréhensible):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var fruitsDansLePanier = [
{
fruit: pomme,
couleur: rouge
},
{
fruit: fraise,
couleur: rouge
},
{
fruit: banane,
couleur: jaune
},
{
fruit: ananas,
couleur: jaune
}
];

var fruitsMangés = [
{
fruit: pomme,
couleur: rouge
}
];

Comment récupérer l'objet du premier fruit rouge du tableau fruitsDansLePanier qui n'a pas encore été mangé (qui n'est pas dans le tableau fruitsMangés ?? Merci d'avance, dites moi ci ce n'est pas clair. :)

P-S j'ai fais quelques recherches, ces fonctions sembles pouvoir aider:

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/indexOf

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/find

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/slice

Après, je ne sais pas lesquelles ni comment les utiliser....

Édité par jerkoco

+0 -0

Je te propose de faire ça en deux étapes :

Une première étape avec la méthode filter (voir ici) pour trier ton premier tableau pour en avoir uniquement les fruits rouges.

Puis tu fait un find sur ce nouveau tableau, en comparant le fruit courant avec les fruits mangés. Si le fruit courant est dans le tableau des fruits mangés tu renvois false, et sinon true.

Édité par Demandred

"Il est vraiment regrettable que tous les gens qui savent parfaitement comment diriger un pays soient trop occupés à conduire des taxis et à couper des cheveux"

+0 -0
Auteur du sujet

Salut, merci beaucoup de ta réponse, mais cela me permettra t-il de récupérer le premier fruit rouge tu tableau de départ ? Car c'est là la clé de mon algorithme, sinon ça ne marchera pas. Je te remercie.

+0 -0

Hello,

Si tu veux simplement récupérer le premier fuit qui n'est pas une "pomme".

1
2
3
4
5
6
7
function myFilter(element) {
  return element.fruit !== fruitsManges[0].fruit;
}

var firstFruitPasManges = fruitsDansLePanier.filter(myFilter)[0];

console.log(firstFruitPasManges); // Object { fruit: "fraise", couleur: "rouge" }

Ou si tu veux récupérer le premier fruit qui n'est pas une "pomme" mais qui est "rouge".

1
2
3
4
5
6
7
function myFilter(element) {
  return element.fruit !== fruitsManges[0].fruit && element.couleur === fruitsManges[0].couleur;
}

var firstFruitPasManges = fruitsDansLePanier.filter(myFilter)[0];

console.log(firstFruitPasManges); // Object { fruit: "fraise", couleur: "rouge" }

HTTP/1.1 418 I'm a teapot

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte