特定于和的数组值取决于其他数组上的索引值列表

时间:2016-09-30 01:03:08

标签: javascript arrays

我有两个数组:

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

b = [0, 1, 3];

我想将数组A中的数组值与精确索引值相加为数组B,以便12+50+5 = 67。请帮助我在原生javascript中执行此操作。我已经尝试过搜索,但我找不到任何运气。我在下面找到了相关文章,但我无法获得逻辑

script.js

5 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:2)

您可以简单地减少数组a,只有在数组b中存在索引时才添加值。

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

结果是12 + 50 + 5 = 67。

答案 3 :(得分: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);

答案 4 :(得分:-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]));