简体   繁体   中英

Loop through array of arrays and increment values into a new array

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.

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:

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)

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM