给定数组的前缀和数组。 JavaScript,

array of prefix sums of the given array. JavaScript,

我检查了几个解决方案,但找不到适合我的解决方案。 我在使用前缀总和创建新数组时遇到问题,例如: arr = [1,2,3,4,5] 应该给 newarr = [1,3,6,10,15] 我的代码有效,但仅适用于一位数字(例如 3 将给出 6)。 我想使用 .map 或 forEach。

in131 = document.getElementById('in131num');
ans131 = document.getElementById('answer131');
document.querySelector('#btn131').addEventListener('click', () => {
   const arr131 = in131.value;
   arr131.split(' ');
   const new131 = [];

   for (let i = 1; i <= arr131; i++) {
       new131.push(i);
   }
   console.log(
       new131.reduce((a, b) => {
           return a + b;
       })
   );
   ans131.textContent = new131.reduce((a, b) => {
       return a + b;
   });

   console.log(
       new131.forEach((x) =>
           x.reduce((a, b) => {
               return a + b;
           })
       )
   );
});

如何在.map上使用.reduce? 还有什么其他解决方案?

因为您在字符串上使用 split,所以您有一个字符串数组,而不是数字

new131.reduce((p,c) => p + parseInt(c, 10), 0)

地图

创建新结果数组的基本解决方案映射,并在映射内部使用循环构建总和。

    let arr = [1, 2, 3, 4, 5]

    const result = arr.map((val, index) => {
    let sum = 0;
    
    for(let i = 0; i < index+1 ; i++){
    sum += arr[i];
    }
    return sum;
    });

    console.log(result);

循环 + 减少

let arr = [1, 2, 3, 4, 5];
let resultArr = [];
for(let i = 1; i < arr.length+1; i++){
let tempArr = arr.slice(0, i, arr);
const result = tempArr.reduce((acc, val) => {
     acc += val;
     return acc;
     }, 0)
     resultArr.push(result);
    }


 console.log(resultArr);

评论片段

let ans131 = document.getElementById("answer131")

document.querySelector("#btn131").addEventListener("click", () => {
  let splitted = document.getElementById("in131num").value.split(",");
  let valasnumber = splitted.map((val) => {
    return Number(val);
  })
  console.log(valasnumber);
  const prefix = valasnumber.map((val, index) => {
    let sum = 0;
    for (let i = 0; i < index + 1; i++) {
      sum += valasnumber[i];
    }
    return sum;
  })
  console.log(prefix)

})
<input type="text" id="in131num"></input>
<button id="btn131"></button>