给定数组的前缀和数组。 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>
我检查了几个解决方案,但找不到适合我的解决方案。 我在使用前缀总和创建新数组时遇到问题,例如: 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>