Tengo dos matrices. Quiero comparar la matriz modificada con la matriz original y quiero cambiar la matriz modificada igual que la matriz original. la posición quiere ser la misma también
Espero que el siguiente resultado sea, mis entradas son las que he puesto en un fragmento
const modified = [ {label: 'cover1', formUid: 1045}, {label: 'cover2', formUid: 211}, {label: 'cover3', formUid: 204}, {label: 'cover4', formUid: 258}, {label: 'cover1', formUid: 1045}, ]pero ahora obtengo este resultado, esto no muestra {label: 'cover1', formUid: 1045}, este objeto en el índice 0
const modified = [ {label: 'cover2', formUid: 211}, {label: 'cover3', formUid: 204}, {label: 'cover4', formUid: 258}, {label: 'cover1', formUid: 1045}, ] const original = [ {label: 'cover1', formUid: 1045}, {label: 'cover2', formUid: 211}, {label: 'cover3', formUid: 204}, {label: 'cover4', formUid: 258}, {label: 'cover1', formUid: 1045}, ]; const modified = [ {label: 'cover4', formUid: 258}, {label: 'cover2', formUid: 211}, {label: 'cover3', formUid: 204}, {label: 'cover1', formUid: 1045}, {label: 'cover1', formUid: 1045}, ] function testFunc(original , modified){ let originalCopyForPosision; originalCopyForPosision = [...original]; modified.forEach((element,idx) => { let targetIndex = originalCopyForPosision.findIndex(e => e.formUid === element.formUid) if(idx === targetIndex){ return }else{ if(targetIndex > 0){ modified.splice(targetIndex, 1); modified.splice(idx,0,element); } } }) document.getElementById("originalArray").innerHTML = JSON.stringify(original); document.getElementById("modifiedArray").innerHTML = JSON.stringify(modified); }testFunc(original,modified) <p id="originalArray"></p> <p id="modifiedArray"></p>esta es mi sugerencia
const original = [ { label: "cover1", formUid: 1045 }, { label: "cover2", formUid: 211 }, { label: "cover3", formUid: 204 }, { label: "cover4", formUid: 258 }, { label: "cover1", formUid: 1045 }, ]; const modified = [ { label: "cover2", formUid: 211 }, { label: "cover1", formUid: 204 }, { label: "cover4", formUid: 258 }, { label: "cover3", formUid: 1045 }, { label: "cover1", formUid: 1045 }, ]; function test() { let modifiedCopy = modified.slice(); original.forEach((value, i) => { if ( value.formUid !== modifiedCopy[i].formUid ) { modifiedCopy[i] = original[i]; } }); console.log(modified, "\n\n", original, modifiedCopy); } test();