Construisez une intersection de la fonction qui compare les matrices d'entrée et renvoie un nouveau tableau avec des éléments trouvés dans toutes les entrées.
Ma solution fonctionne mais c'est très encombrant: p> Je voudrais aussi utiliser réduire () dans ma solution. Quelqu'un peut-il fournir une solution de code alternative qui utilise réduire () et est plus efficace s'il vous plaît? P> J'apprécierais que vous puissiez commenter ce que chaque ligne de votre code fait pour m'aider à comprendre. p> p>
3 Réponses :
Vous pouvez utiliser le filtre Ce n'est cependant pas la solution la plus optimale cependant. Utilisez un Pour plus d'informations, reportez-vous à la réponse à Cette question - Traitement de deux tableaux comme entrée. P> P> réduire code> comme ceci:
code> pièce effectue l'intersection de deux tableaux donnés
a < / code> et
B code>. La pièce code> Réduire CODE> Applique cette logique en prenant la matrice suivante à partir de l'entrée et en l'intersectant avec le résultat précédent. P>
définir code> pour de meilleures performances lorsque vous utilisez d'énormes tableaux. P>
Je suis un peu confus: quel est le code ci-dessous? A.Filter (C => B.Some (D => C === D))
@ Pinenuts0, filtre code> iTère le tableau
A code> et renvoie un nouveau tableau contenant les valeurs pour lesquelles l'expression
B.Some (D => C === d) code> est vrai.
B.Some CODE> ITERATES L'AUTRE,
B CODE>, Array et retourne true quand il trouve au moins sur l'élément qui satisfait
c === d code>.
Vous pouvez utiliser p> filtre () code> sur n'importe lequel de la sous-réseau. Et utiliser
tous les () code> sur le tableau principal.
const arr1 = [5, 10, 15, 20];
const arr2 = [15, 88, 1, 5, 7];
const arr3 = [1, 10, 15, 5, 20];
const intersection = arr => {
let [first,...rest] = arr;
rest = rest.map(x => new Set(x));
return first.filter(x => rest.every(a => a.has(x)));
}
console.log(intersection([arr1,arr2,arr3]))
Merci; Quel est le code ci-dessous? x => arr.yevery (A => A.Inclut (x))
@ Pinenuts0 j'ai ajouté une explication. Demandez si vous ne comprenez pas une chose.
Etrange, la question portait sur l'utilisation de réduire code>, et cette réponse est acceptée. Je suis confus.
@Trincot bien je ne peux pas pourquoi est-ce tellement? Parfois, de nouveaux utilisateurs ne connaissent pas beaucoup sur les méthodes de réseau de commandes supérieures. Ils connaissent juste le nom de l'un d'entre eux et ils demandent cela dans la question. Ils n'ont aucune idée de la plupart des méthodes appropriées à leur usage.
Vous pouvez prendre le premier tableau d'index et le faire correspondre à tous les autres matrices et la valeur de filtrage basée en conséquence
p>
const arr1 = [5, 10, 15, 20]; const arr2 = [15, 88, 1, 5, 7]; const arr3 = [1, 10, 15, 5, 20]; const intersection = (arr) => { let [a,...rest] = arr return a.filter(v=> rest.every(val => val.includes(v))) } console.log(intersection([arr1, arr2, arr3]));