指標值的列表我有兩個數組:總和特定陣列值依賴於其他陣列
a = [12, 50, 2, 5, 6];
和
b = [0, 1, 3];
我想在陣列A
與精確索引值和這些數組值如數組B
,所以這將是12+50+5 = 67
。請幫助我在原生JavaScript中執行此操作。我已經嘗試過搜索,但我找不到任何運氣。我發現相關的文章下面,但我不能讓邏輯
指標值的列表我有兩個數組:總和特定陣列值依賴於其他陣列
a = [12, 50, 2, 5, 6];
和
b = [0, 1, 3];
我想在陣列A
與精確索引值和這些數組值如數組B
,所以這將是12+50+5 = 67
。請幫助我在原生JavaScript中執行此操作。我已經嘗試過搜索,但我找不到任何運氣。我發現相關的文章下面,但我不能讓邏輯
您可以簡單地做如下操作;
var arr = [12, 50, 2, 5, 6],
idx = [0, 1, 3],
sum = idx.map(i => arr[i])
.reduce((p,c) => p + c);
console.log(sum);
sumAIndiciesOfB = function (a, b) {
var runningSum = 0;
for(var i = 0; b.length; i++) {
runningSum += a[b[i]];
}
return runningSum;
};
邏輯解釋:
遍歷數組b中。對於b中的每個值,請查看數組a(a[b[i]]
),然後將其添加到runningSum
。循環遍歷b後,您將總結出每個索引a
,總數將在runningSum
之間。
這是有效的,但請記住,將一個函數分配給一個變量會強制所有函數調用在賦值之後出現,這對於未分配給變量的函數並非如此。 – PHPglue
b
包含a
指數來概括,所以環比b
,引用a
:
var sum=0, i;
for (i=0;i<b.length;i++)
{
sum = sum + a[b[i]];
}
// sum now equals your result
像這樣:
function addByIndexes(numberArray, indexArray){
var n = 0;
for(var i=0,l=indexArray.length; i<l; i++){
n += numberArray[indexArray[i]];
}
return n;
}
console.log(addByIndexes([12, 50, 2, 5, 6], [0, 1, 3]));
你可以簡單地降低陣列a
如果只添加值的索引存在於數組b
中。
a.reduce((prev, curr, index) => b.indexOf(index) >= 0 ? prev+curr : prev, 0)
結果是12 + 50 + 5 = 67。
索引3的值不是5? – passion