我想獲取數組的元素,將它們乘以它們的索引位置,並將結果添加到一起。通過索引位置乘以數組元素
所以,如果我有:
array = [1, 2, 3]
我會得到8
// (1 * 0)+(2 * 1)+(3 * 2) = 8
什麼是做到這一點的香草JS,只是爲了學習目的的最佳方式是什麼?
我想獲取數組的元素,將它們乘以它們的索引位置,並將結果添加到一起。通過索引位置乘以數組元素
所以,如果我有:
array = [1, 2, 3]
我會得到8
// (1 * 0)+(2 * 1)+(3 * 2) = 8
什麼是做到這一點的香草JS,只是爲了學習目的的最佳方式是什麼?
的功能,語義的方法是:
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
。
當然,這可能比您想要的還要多或需要學習。正如其他人所說的那樣,老式循環沒有任何問題:
function weightedSum(a) {
sum = 0;
for (let i = 0; i < a.length; i++) sum += a[i] * i;
return 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 array = [1, 2, 3]
var result = array.map((x,i) => x*i).reduce((a,b) => a+b,0);
console.log(result);
好的,這比我所做的要好得多。有時間瞭解如何使用地圖! –
var result = 0;
for(i=0;i<array.length;i++)
{
var val = array[i];
result += val*i;
}
alert(result);
這個解決方案沒有什麼特別的錯誤,但是你不想聲明'i',以及將值存儲在'val'中的目的是什麼? – 2016-11-16 20:35:38
幾種方法,但最簡單的讓你瞭解是:
var numbers = [1,2,3];
var sum = 0;
for(var i = 0;i < numbers.length; i++){
sum+= (i*numbers[i]);
}
console.log(sum);
一個非常簡單的方法是:
console.log(
// ┌ the running total
// │ ┌ the current array value
// │ │ ┌ the current array index
// │ │ │
[1, 2, 3].reduce((s, n, i) => s + (n * i), 0)
);
非常感謝! –
出於學習目的,您應該嘗試自己做。從for循環開始。 – Blorgbeard
'var t = 0,i = array.length; while(i--)t + = i * array [i];' –
'[1,2,3] .reduce((s,n,i)=> s +(n * i),0);' – Yoshi