数组帮助.如何在不包含第一个元素和最后一个元素的情况下,将数组本身相乘



用户输入的我的数组:[1,2,4]

我想要什么:

[1,2,3]*[2,3,4]
(1*2(+(2*3(+(3*4(=20

到目前为止:

var array = [];
var number= document.getElementById("number").value; //this is where user inputs the number for my array
var sum = 0;
for (var i = 0; i< number.length; i++){
array.push(parseInt(number[i]));
var first= number[i-1];
var second = number[i+1];
sum += (first*second);
}
console.log(sum);

这是我使用阵列的reduce方法的解决方案

[1, 2, 3, 4].reduce((a, c, i, s) => (s[i + 1] ? c * s[i + 1] + a : a), 0);

不需要数组。

在以下模式中:(1*2(+(2*3(+(3*4(您可以看到使用没有数组的for循环是如何发生这种情况的。

以下工作:

var number= parseInt(document.getElementById("number").value); //this is where user inputs the number for my array
var sum=0;
for (var i = 1; i< number; i++){
sum += i*(i+1);
}
console.log(sum);

您可以使用slice来获取数组的子集,然后使用reduce来创建这样的总和:

const arr = [1,2,3,4]
const first = arr.slice(0, -1)
const last = arr.slice(1, arr.length)
const result = first.reduce((acc, num, idx) => acc + num * last[idx], 0)
console.log(result)

最新更新