按索引位置乘以数组元素

时间:2016-11-16 20:12:35

标签: javascript arrays

我想获取数组的元素,将它们乘以索引位置,然后将结果一起添加。

所以,如果我有:

array = [1, 2, 3] 

我会得到8。

// (1 * 0)+(2 * 1)+(3 * 2) = 8

在vanilla JS中这样做的最佳方法是什么,仅用于学习目的?

6 个答案:

答案 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)
);

手动:Array.prototype.reduce()

答案 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来获取总和

&#13;
&#13;
var array = [1, 2, 3]
var result = array.map((x,i) => x*i).reduce((a,b) => a+b,0);
console.log(result);
&#13;
&#13;
&#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);