Home > Net >  Loop through array of arrays and increment values into a new array
Loop through array of arrays and increment values into a new array

Time:12-17

I'm struggling with looping through an array of arrays and returning a new array with the incremented value of the result.

Here's the concept:

let array1 = [array1, array2];
let array2 = [4000,5000,3000,6000];
let array3 = [3000, 15000, 9000, 1000];

let i = 0;
let newArray = []
while (i < array1.length) {
// how do I get the combined value in a new array so that newArray[0] = 7000, newArray[1] = 20000 etc.
}

Array1 comes from an API and is an unknown number of arrays.

CodePudding user response:

This should work for any number of sub arrays. Here it is assumed that array1 contains 4 arrays.

let array2 = [4000, 5000, 3000, 6000]
let array3 = [3000, 15000, 9000, 500]
let array4 = [5000, 15000, 4000, 2000]
let array5 = [6000, 25000, 5000, 8000]
let array1 = [array2, array3, array4, array5]

const result = array1.reduce((acc, curr) => {
  return acc.map((item, index) => item   curr[index])
})

console.log(result)


References:

CodePudding user response:

In case number of elements is dynamic then,

let array1 = [[4000, 5000, 3000, 6000], [3000, 15000, 9000, 1000, 2000, 3000], [1000], [3000, 15000, 9000, 1000, 2000, 3000, 1000, 10000]];

let index = 0;
let newArray = [];
let maxElements = Math.max(...array1.map(arr => arr.length));
let arrayLength = array1.length;


while (index < maxElements) {
    let total = 0;

    for (let arrayIndex = 0; arrayIndex < arrayLength; arrayIndex  ) {
        let element = array1[arrayIndex][index]
        if (element) total  = element;
    }

    newArray.push(total);
    index  ;
}

console.log(newArray)

CodePudding user response:

You may need a nested loop. So basically you will iterate array1 which holds both array2 and array3 and then in newArray you will see if specific index has a value. If so then you will add value with previous one

let array2 = [4000, 5000, 3000, 6000];
let array3 = [3000, 15000, 9000, 1000];
let array1 = [array2, array3];
let i = 0;
let newArray = []
while (i < array1.length) {
  for (let j = 0; j < array1[i].length; j  ) {
    // if index of new array is unoccupied then set a value there 
    if (!newArray[j]) {
      newArray[j] = array1[i][j]
    } else {
      // if index is occupied then add with previous value
      newArray[j] = newArray[j]   array1[i][j]

    }

  }
  i  ;
}
console.log(newArray)

  • Related