我想获取数组的元素,将它们乘以索引位置,然后将结果一起添加。
所以,如果我有:
array = [1, 2, 3]
我会得到8。
// (1 * 0)+(2 * 1)+(3 * 2) = 8
在vanilla JS中这样做的最佳方法是什么,仅用于学习目的?
答案 0 :(得分:2)
一种非常简单的方法是:
console.log(
// ┌ the running total
// │ ┌ the current array value
// │ │ ┌ the current array index
// │ │ │
[1, 2, 3].reduce((s, n, i) => s + (n * i), 0)
);
答案 1 :(得分:2)
一种功能性的语义方法是:
const add = (a, b) => a + b;
const multiply = (a, b) => a * b;
对数组求和:
const sum = a => a.reduce(add, 0);
根据需要添加价值和索引的产品:
const weightedSum = a => sum(a.map(multiply));
我们可以说a.map(multiply)
因为map
碰巧将值和索引传递给回调multiply
。
当然,这可能比您想要或需要学习更多。正如其他人提到的那样,老式的for循环没有任何问题:
function weightedSum(a) {
sum = 0;
for (let i = 0; i < a.length; i++) sum += a[i] * i;
return sum;
}
答案 2 :(得分:1)
connect()
答案 3 :(得分:1)
您可以使用地图乘以索引,然后使用reduce来获取总和
var array = [1, 2, 3]
var result = array.map((x,i) => x*i).reduce((a,b) => a+b,0);
console.log(result);
&#13;
答案 4 :(得分:1)
有几种方法,但最容易理解的是:
var numbers = [1,2,3];
var sum = 0;
for(var i = 0;i < numbers.length; i++){
sum+= (i*numbers[i]);
}
console.log(sum);
答案 5 :(得分:0)
var result = 0;
for(i=0;i<array.length;i++)
{
var val = array[i];
result += val*i;
}
alert(result);