2016-09-30 57 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。