将数组元素按索引位置相乘
Multiply Array Elements by Index Position
我想取数组中的元素,将它们乘以它们的索引位置,然后将结果相加。
所以如果我有:
array = [1, 2, 3]
我会得到8。
// (1 * 0)+(2 * 1)+(3 * 2) = 8
在普通JS中做这件事的最好方法是什么,仅仅是为了学习的目的?
一个非常简单的方法是:
console.log(
// ┌ the running total
// │ ┌ the current array value
// │ │ ┌ the current array index
// │ │ │
[1, 2, 3].reduce((s, n, i) => s + (n * i), 0)
);
Manual: Array.prototype.reduce()
一个功能的、语义的方法是:
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;
}
您可以使用map来乘以index,然后使用reduce来获得和
var array = [1, 2, 3]
var result = array.map((x,i) => x*i).reduce((a,b) => a+b,0);
console.log(result);
有几种方法,但最容易理解的是:
var numbers = [1,2,3];
var sum = 0;
for(var i = 0;i < numbers.length; i++){
sum+= (i*numbers[i]);
}
console.log(sum);
var array = [1, 2, 3];
var items = array.map(function(x,i){
return x * i;
});
var sum = items.reduce(function(init, x) {
return x + init,0
});// 8
var result = 0;
for(i=0;i<array.length;i++)
{
var val = array[i];
result += val*i;
}
alert(result);
相关文章:
- 在从索引位置返回的字符串中查找空白
- 需要呈现MongoDB查询返回结果的特定索引/位置
- 有没有办法得到引导3旋转木马的索引位置
- 点击JQuery/HTML5显示元素的索引/位置
- Javascript i(index,iterator):如果用作变量,它将始终被解释为索引位置
- 获取所选元素的位置,而不是 DOM 中元素的索引
- Javascript 返回数组中“匹配”数组的位置索引
- 动态 jquery ui 可排序块的索引/位置
- Windows 8 应用程序中的索引数据库位置
- 子位置绝对位于父绝对 z 索引内
- 在 Firefox 中,当选择具有位置和 z 索引时,为什么更改事件不会在选项卡上触发
- 索引如何返回此示例的位置,结果不应该是 -1
- 如何删除字符串中的索引位置范围
- 工具提示 z 索引位置或其他内容
- jQuery-通过对象在兄弟对象中的位置(索引)来识别对象
- jquery附加到索引位置
- 获取元素在父级中的位置(索引)
- UI.Sortable:接收UI.Dragable时的默认位置/索引
- 如何在浏览器历史记录中找到当前位置索引
- 精灵的位置z索引