简体   繁体   English

遍历 arrays 数组并将值递增到新数组中

[英]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.我正在努力循环遍历 arrays 数组并返回一个带有结果递增值的新数组。

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. Array1 来自 API 并且是未知数量的 arrays。

This should work for any number of sub arrays.这应该适用于任意数量的子 arrays。 Here it is assumed that array1 contains 4 arrays.这里假设array1包含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.因此,基本上您将迭代包含 array2 和 array3 的 array1,然后在 newArray 中您将查看特定索引是否具有值。 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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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