Bonjour,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
function whatIsInAName(collection, source) {
 
  var srcKeys = Object.keys(source);
console.log(srcKeys)
  // filter the collection
  return collection.filter(function(obj) {
    let w = srcKeys
      .map(function(key) {
        return obj.hasOwnProperty(key) && obj[key] === source[key];
      });
console.log(w)
      let x = w.reduce(function(a, b) {
        return a && b;
      });
      /*let x = w.toString();*/   
      console.log(x)
      return x
  });
}
 
 
let result = whatIsInAName(
  [
    { first: "Romeo", last: "Montague" },
    { first: "Mercutio", last: null },
    { first: "Tybalt", last: "Capulet" }
  ], 
    { last: "Capulet" }
  );
  console.log(result)
Ci-dessus un petit code que je comprends pas.
J'ai ajouté des variables pour voir ce que le code fait étape par étape.
Apparemment, ce que la méthode reduce() voit en entrée est un tableau [true] ou [false] et sa sortie est "true" ou "false".
Le code fonctionne avec les variables, donc ce n'est pas un problème.

Je ne comprends pas l'utilisation de map() et reduce() ici.
Pour moi, map() doit transformer un tableau, alors que là on lui passe une condition et reduce() devrait réduire un tableau à une valeur alors que là j'ai l'impression qu'elle ne fait que transformer, par exemple, [true] en 'true'...
Je n'arrive pas à comprendre ce qu'il se passe exactement.
J'ai essayé de remplacer reduce() par :
Mais le code ne fonctionne plus, donc pour finir je pense que je ne comprends rien du tout.

Quelqu'un pour m'aider ?