Compare dos matrices y empuje el mismo elemento en una matriz y descanse en otra matriz en javascript
const arr1 = ['a', 'c', 'e', 'j', 'p', 'r', 'l']; const arr2 = ['e', 'r']; **Expected response :** Same elements ['e', 'r'] different elements ['a', 'c', 'j', 'l'] expected array : ['ac', 'e', 'jp', 'r', 'l']He intentado esta es la forma correcta?
const res = []; let txt = ''; for (let i = 0; i < arr1.length; i++) { for (let j = 0; j < arr2.length; j++) { if (arr1[i] === arr2[j]) { res.push(txt); res.push(arr2[j]); j += 1; txt = ''; } else if (j === arr2.length - 1) { txt += `${arr1[i]} `; if (i === arr1.length - 1) { res.push(txt); } } } }Al observar su matriz esperada y su propio segmento de código, podría adivinar lo que está tratando de lograr (no está completamente claro en la declaración de su problema). Si mi comprensión es correcta, es posible que su código no dé como resultado la respuesta esperada en todos los casos si la matriz de entrada no está arreglada. He modificado su código como se muestra a continuación. Tener un cheque. establezca la entrada arr2 como ['e', 'r', 't'] , o ['a', 'c', 'e', 'j', 'p', 'r', 'l'] y verifique La salida. Déjame saber si es útil.
for (let i = 0; i < arr1.length; i++) { for (let j = 0; j < arr2.length; j++) { if (arr1[i] === arr2[j]) { if(txt!=='') res.push(txt) res.push(arr2[j]); txt = ''; break; } else if (j === arr2.length - 1) { txt+= txt===''?`${arr1[i]}` : ` ${arr1[i]}` if (i === arr1.length - 1) { res.push(txt); } } } }Para agrupar los elementos por iguales y diferentes, solo puede usar el filtro.
const arr1 = ['a', 'c', 'e', 'j', 'p', 'r', 'l']; const arr2 = ['e', 'r']; const sameElements = [...arr1].filter(x => arr2.includes(x)) const differentElements = [...arr1].filter(x => !arr2.includes(x))