给定数组的前缀和数组。 JavaScript,[重复]
Posted
技术标签:
【中文标题】给定数组的前缀和数组。 JavaScript,[重复]【英文标题】:array of prefix sums of the given array. JavaScript, [duplicate] 【发布时间】:2021-01-09 21:52:24 【问题描述】:我检查了几个解决方案,但找不到适合我的解决方案。 我在创建具有前缀总和的新数组时遇到问题,例如: 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? 还有什么其他的解决方案?
【问题讨论】:
【参考方案1】:因为您在字符串上使用split
,所以您有一个字符串数组,而不是数字
new131.reduce((p,c) => p + parseInt(c, 10), 0)
【讨论】:
【参考方案2】:地图
创建新结果数组的基本解决方案地图,地图内部使用循环来构建总和。
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>
【讨论】:
谢谢,我喜欢第一个选项,当然一切正常。但是我在从一个输入中存储多个数字时遇到了问题。您的版本基于已定义的数组: let arr = [1, 2, 3, 4, 5];当用户输入多个数字时,问题就开始了。我试图将 input.value 推送到新的 arr 并且结果是错误的(它只推送第一个数字)。 console.log 显示一个没有数组的数字。地图不会启动,因为 arr 没有定义。你知道如何解决这个问题吗? 检查 input.value 是否真的是一个带有 typeof 的数字,你能分享你的示例代码吗?没有代码很难说 谢谢。如果输入是单个数字,则返回数字,但如果我将添加两个或更多数字,则返回 NaN。我的代码:``` in131 = document.getElementById("in131num") ans131 = document.getElementById("answer131") document.querySelector("#btn131").addEventListener("click", () => const arr131 = []; arr131.push(Number(in131.value)) console.log(arr131) const prefix =arr131.map((val, index) => let sum=0; for (let i=1; i 不,不是吗?输入 1, 2, 3, 4, 5 和第一个 sn-p @konrad 一样 不客气 :) 如果您认为这对您有帮助,请将其标记为已接受,请点击上方/下方投票以上是关于给定数组的前缀和数组。 JavaScript,[重复]的主要内容,如果未能解决你的问题,请参考以下文章