Para este tipo de matriz:
let combinazioniMat = [ ["Person1", "Person2", "Person3", "Person4", "Person6"], ["Person1", "Person2", "Person3", "Person5", "Person6"], ["Person1", "Person2", "Person3", "Person6", "Person5"], ]Quiero que cada matriz agregue cada uno de los elementos de otra matriz:
let mediciPom = ["Person1", "Person4"]Intenté hacerlo así, pero no funciona...
let combinazioniTemp =[] for (let combN=0; combN<combinazioniMat.length;combN++){ for (let med of mediciPom){ combinazioniMat[combN].push(med); combinazioniTemp.push(combinazioniMat[combN]); combinazioniMat[combN].pop() }}ESTE ES EL RESULTADO QUE QUIERO OBTENER (ACTUALIZADO):
[ ["Person1", "Person2", "Person3", "Person4", "Person6", "Person1" ], ["Person1", "Person2", "Person3", "Person4", "Person6", "Person4" ], ["Person1", "Person2", "Person3", "Person5", "Person6", "Person1" ], ["Person1", "Person2", "Person3", "Person5", "Person6", "Person4" ], ["Person1", "Person2", "Person3", "Person6", "Person5", "Person1" ], ["Person1", "Person2", "Person3", "Person6", "Person5", "Person4" ], ]Además, necesito la misma función, pero presionando el valor solo si aún no está presente en la matriz. Para obtener esto:
[ ["Person1", "Person2", "Person3", "Person5", "Person6", "Person4" ], ["Person1", "Person2", "Person3", "Person6", "Person5", "Person4" ], ](La Persona1 no se enviará porque ya está presente, y la Persona4 solo se enviará en la matriz en la que no lo está)
Gracias y perdon si no fui claro antes...
Bueno, esa edición cambia tu pregunta por completo, así que estoy publicando una nueva respuesta.
Entonces, para la primera parte, asumo que desea replicar cada subarreglo con un valor diferente de mediciPom cada vez.
Para eso puedes hacer uso de la función <Array>.flatMap :
combinazioniMat.flatMap(arr => mediciPom.map(e => arr.concat(e)));Para la segunda parte, puede falsificar el valor cuando el elemento ya existe y luego ejecutar la matriz de salida a través de un filtro de verdad simple.
combinazioniMat.flatMap(arr => mediciPom.map(e => !arr.includes(e) && arr.concat(e))).filter(n=>n); Ejemplo completo: withDuplicates es el primer método, withoutDuplicates es el segundo:
let combinazioniMat = [ ["Person1", "Person2", "Person3", "Person4", "Person6"], ["Person1", "Person2", "Person3", "Person5", "Person6"], ["Person1", "Person2", "Person3", "Person6", "Person5"], ] let mediciPom = ['Person1', 'Person4']; let withDuplicates = combinazioniMat.flatMap(arr => mediciPom.map(e => arr.concat(e))); let withoutDuplicates = combinazioniMat.flatMap(arr => mediciPom.map(e => !arr.includes(e) && arr.concat(e))).filter(n=>n); console.log('FIRST', withDuplicates) console.log('SECOND', withoutDuplicates)Encuentre el resto del índice de la matriz y utilícelo para tomar el elemento de la matriz mediciPom .
const combinazioniMat=[["Person1","Person2","Person3","Person4","Person6"],["Person1","Person2","Person3","Person5","Person6"],["Person1","Person2","Person3","Person6","Person5"],["Person1","Person2","Person4","Person5","Person6"],["Person1","Person2","Person4","Person6","Person5"],["Person1","Person2","Person5","Person3","Person6"],["Person1","Person2","Person5","Person4","Person6"],["Person1","Person2","Person5","Person6","Person4"],["Person1","Person2","Person4","Person3","Person6"]]; const mediciPom = ['Person1', 'Person2']; for (let i = 0; i < combinazioniMat.length; i++) { const mp = mediciPom[i % 2]; combinazioniMat[i].push(mp); } console.log(combinazioniMat);utilizar este:
let combinazioniMat = [ ["Person1", "Person2", "Person3", "Person4", "Person6"], ["Person1", "Person2", "Person3", "Person5", "Person6"], ["Person1", "Person2", "Person3", "Person6", "Person5"], ["Person1", "Person2", "Person4", "Person5", "Person6"], ["Person1", "Person2", "Person4", "Person6", "Person5"], ["Person1", "Person2", "Person5", "Person3", "Person6"], ["Person1", "Person2", "Person5", "Person4", "Person6"], ["Person1", "Person2", "Person5", "Person6", "Person4"], ["Person1", "Person2", "Person4", "Person3", "Person6"], ]; let mediciPom = ["Person1", "Person2"]; let combinazioniTemp = combinazioniMat.map((el, index) => [ ...el, mediciPom[index % 2], ]); console.log(combinazioniTemp);