Tengo dos matrices de muestra a continuación.
let arr1 = [ { key: "WIHUGDYVWJ", className: "science" }, { key: "qwljdhkuqwdnqwdk", className: "english" }, { key: "likubqwd", className: "robotics" } ]; let arr2 = [ { key: "WIHUGDYVWJ", title: "math" }, { key: "qwljdhkuqwdnqwdk", title: "english" }, { key: "likubqwd", title: "robotics" } ];¿Cómo puedo filtrar arr1 para obtener solo elementos que tengan un valor de 'nombre de clase' que coincida con el valor de 'título' del elemento de arr2? (esperando que solo queden elementos con 'inglés' y 'robótica')
¿Cómo puedo filtrar arr1 para obtener solo elementos que tienen un valor de 'nombre de clase' que no coincide con el valor de 'título' del elemento de arr2? (esperando que solo queden elementos con 'ciencia')
¡Gracias!
let arr1 = [ { key: "WIHUGDYVWJ", className: "science" }, { key: "qwljdhkuqwdnqwdk", className: "english" }, { key: "likubqwd", className: "robotics" }, { key: "abcd", className: "history" } ]; let arr2 = [ { key: "WIHUGDYVWJ", title: "math" }, { key: "qwljdhkuqwdnqwdk", title: "english" }, { key: "likubqwd", title: "robotics" } ]; // q1 answer console.log(arr1.map(arr1Item => arr2.filter(arr2Item => arr1Item.className === arr2Item.title)).flat()); // q2 answer console.log(arr1.filter(arr1Item => !arr2.some(arr2Item => arr2Item.title === arr1Item.className))); Escribí sin usar una declaración for , if/else tanto como sea posible. este código puede no ser el mejor. Creo que se podría mejorar más.
espero que mi respuesta sea de ayuda