2016-09-30 56 views
1

指標值的列表我有兩個數組:總和特定陣列值依賴於其他陣列

a = [12, 50, 2, 5, 6]; 

b = [0, 1, 3]; 

我想在陣列A與精確索引值和這些數組值如數組B,所以這將是12+50+5 = 67。請幫助我在原生JavaScript中執行此操作。我已經嘗試過搜索,但我找不到任何運氣。我發現相關的文章下面,但我不能讓邏輯

​​

+1

索引3的值不是5? – passion

回答

2

您可以簡單地做如下操作;

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

2
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之間。

+0

這是有效的,但請記住,將一個函數分配給一個變量會強制所有函數調用在賦值之後出現,這對於未分配給變量的函數並非如此。 – PHPglue

2

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 
-1

像這樣:

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])); 
2

你可以簡單地降低陣列a如果只添加值的索引存在於數組b中。

a.reduce((prev, curr, index) => b.indexOf(index) >= 0 ? prev+curr : prev, 0) 

結果是12 + 50 + 5 = 67。