我有两个相同长度的Javascript向量a和b。我想把b添加到。显而易见的方法是:
for (i=0; i<a.length; ++i)
a[i] += b[i]
但这需要一个循环。我能做到:
a.forEach(function(item,index) {
a[index] += b[index]
})
但这很麻烦 - 它需要一个不需要的参数&#34; item&#34;。有更短的选择吗?也许使用一些外部库?
答案 0 :(得分:2)
没有循环,没有内置的JS函数可以做到这一点。此外,任何实现此功能的库都将使用循环来执行此操作。
所以,写一个简短的实用函数,然后只要你想这样做就调用该函数。由于它不是本机JS功能,因此将在某处循环以实现此功能。如果你想&#34;隐藏&#34;循环,然后将它放在一个实用函数中,只需在需要时调用该函数。
// returns a new array that is the sum of the two vector arrays
function addVectors(a, b) {
return a.map(function(item, index) {
return item += b[index];
});
}
或者,如果您想要修改一个阵列:
// add one vector to another, modifying the first one
function addToVector(a, b) {
a.forEach(function(item, index) {
a[index] += b[index];
});
return a;
}
或者,如果未使用的item
参数由于某种原因而困扰您:
// add one vector to another, modifying the first one
function addToVector(a, b) {
for (var i = 0; i < a.length; i++) {
a[i] += b[i];
}
return a;
}
注意,所有这些函数都假设a
和b
的长度相同。如果它们最终不是相同的长度并且您想要检查它,则必须指定您希望行为的内容。你可以抛出异常,只需添加共同的部分等等......
例如:
// returns a new array that is the sum of the two vector arrays
function addVectors(a, b) {
if (a.length !== b.length) {
throw new Error("Vector arrays must be the same length to add them");
}
return a.map(function(item, index) {
return item += b[index];
});
}
答案 1 :(得分:0)
你确定要在没有循环的情况下这样做吗?好吧:
a.forEach(function(currentElement, Index){
b[Index] += currentElement;
});