Saltar al contenido

¿Cómo puedo encontrar valores coincidentes en dos matrices?

Solución:

Puedes usar :

const intersection = array1.filter(element => array2.includes(element));

Naturalmente, mi enfoque fue recorrer la primera matriz una vez y verificar el índice de cada valor en la segunda matriz. Si el índice es > -1, luego push en la matriz devuelta.

​Array.prototype.diff = function(arr2) {
    var ret = [];
    for(var i in this) {   
        if(arr2.indexOf(this[i]) > -1){
            ret.push(this[i]);
        }
    }
    return ret;
};

Mi solución no usa dos bucles como lo hacen otros, por lo que puede ejecutarse un poco más rápido. Si quieres evitar usar for..in, puede ordenar ambas matrices primero para reindexar todos sus valores:

Array.prototype.diff = function(arr2) {
    var ret = [];
    this.sort();
    arr2.sort();
    for(var i = 0; i < this.length; i += 1) {
        if(arr2.indexOf(this[i]) > -1){
            ret.push(this[i]);
        }
    }
    return ret;
};

El uso se vería así:

var array1 = ["cat", "sum","fun", "run", "hut"];
var array2 = ["bat", "cat","dog","sun", "hut", "gut"];

console.log(array1.diff(array2));

Si tiene un problema / problema con la extensión del prototipo de Array, puede cambiarlo fácilmente a una función.

var diff = function(arr, arr2) {

Y cambiarías en cualquier lugar donde la función originalmente decía this para arr2.

Encontré una ligera alteración en lo que @ jota3 sugirió que funcionó perfectamente para mí.

var intersections = array1.filter(e => array2.indexOf(e) !== -1);

¡Espero que esto ayude!

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *