Home > Enterprise >  how to push all value of an array into another array
how to push all value of an array into another array

Time:01-24

For this kind of array:

 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"]
    ]

I want for each array to add each of the element of another array:

let mediciPom = ["Person1", "Person2"]

I tried to do like this, but it doesn't work...

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()
}}

I'd like to obtain something like this:

[
     ["Person1", "Person2", "Person3", "Person4", "Person6", "Person1"],
     ["Person1", "Person2", "Person3", "Person5", "Person6", "Person2"],
     ["Person1", "Person2", "Person3", "Person6", "Person5", "Person1"],
     ["Person1", "Person2", "Person4", "Person5", "Person6", "Person2"],
     ["Person1", "Person2", "Person4", "Person6", "Person5", "Person1"],
...]

EDIT: Thanks for all the answers, but i realize that I need ALSO a way to insert the value ONLY if it isn't already in the array... Can you help me with that?

CodePudding user response:

Well if you want it to go in order and only add one element each time then:

let combinazioniTemp = combinazioniMat.map((e, i) => e.concat(mediciPom[i % mediciPom.length]));

Full Example:

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((e, i) => e.concat(mediciPom[i % mediciPom.length]));

console.log(combinazioniTemp);


To answer updated question:

If you want to prevent duplicates entirely in the arrays, you can make use of the Set constructor:

let combinazioniTemp = combinazioniMat.map((e, i) => Array.from(new Set(e.concat(mediciPom[i % mediciPom.length]))));

If you want to allow existing duplicates in the arrays but only add the new element if it doesn't already exist then just check the condition like so:

let combinazioniTemp = combinazioniMat.map((e, i) => {
  const n = mediciPom[i % mediciPom.length];
  return (e.includes(n) ? e:e.concat(n));
});

CodePudding user response:

Find the remainder of the array index, and use that to grab the element from the mediciPom array.

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);

CodePudding user response:

use this:

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);

  •  Tags:  
  • Related