Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组帮助。如何将数组自身相乘,一个数组中没有第一个元素,另一个数组中没有最后一个元素_Javascript_Arrays_Math_Dom - Fatal编程技术网

Javascript 数组帮助。如何将数组自身相乘,一个数组中没有第一个元素,另一个数组中没有最后一个元素

Javascript 数组帮助。如何将数组自身相乘,一个数组中没有第一个元素,另一个数组中没有最后一个元素,javascript,arrays,math,dom,Javascript,Arrays,Math,Dom,来自用户输入的我的数组:[1,2,3,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;

来自用户输入的我的数组:[1,2,3,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);
var数组=[];
var number=document.getElementById(“number”).value//这是用户为我的阵列输入数字的地方
var总和=0;
对于(变量i=0;i
无需为此设置阵列

在下面的模式中:(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);
var number=parseInt(document.getElementById(“number”).value)//这是用户为我的阵列输入数字的地方
var总和=0;
对于(变量i=1;i
这是我使用数组方法的解决方案

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

您可以使用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)
如果我这样做,我会得到NaN。我是否仍然可以使用parseInt()?出于某种原因,我得到了0。您的sum或number得到了0?在我的控制台上,sum是0,这意味着number是0。尝试手动将数字设置为某个值。然后,您的问题是并没有按预期填充数字。您的解决方案假定数组已填充。这个问题不需要数组。看我上面的答案。@Maxqueue我看到你的答案了。他说“输入是数组”。您正在计算数组索引,而不是数组项。尝试洗牌该数组,看看是否得到正确的输出。顺便说一句,我不明白你为什么要把数组转换成数字。享受