从以下线程(Multiplying an array with a single value by a number?)我得到的信息是,通过执行[1, 2]*3
,无法将数字乘以数组中的所有元素。但既然我必须这样做,我想知道是否有一种聪明的方法可以做到这一点?
我知道我可以编写一个迭代遍历所有元素的函数,并手动将数字乘以每个元素。但我想知道是否有更聪明的方法呢?
也许有些库实现了一些数学函数,我可以将数字乘以数组的所有元素?
或者你认为Array的map函数可以用于此目的吗?
答案 0 :(得分:5)
您确实可以使用map
功能:
function multiply(input) {
return input * 3;
}
var myArray = [1, 2];
var myNewArray = myArray.map(multiply);
这样做是为你在数组中的每个元素上执行一个函数,并返回一个包含结果的新数组。
如果您已经在使用jQuery,可以使用each
函数使其更简洁:
$.each(myArray, function(index, value) {
myArray[index] = value * 3;
});
这会更改现有数组。虽然使用普通JS方法,但如果您不想要新变量,则可以myArray = myArray.map(multiply);
。
我以jsFiddle为例。
答案 1 :(得分:2)
像math.js这样的库很容易,它带有矩阵支持。你可以这样做:
var result = math.multiply([1, 2], 3);
或使用表达式解析器:
var result = math.eval('[1, 2] * 3');
答案 2 :(得分:0)
答案 3 :(得分:0)
您尚未将数组定义为数组变量:只需执行以下操作:
function times2(theArray){
var newArray = [];
for (i = 0; i < theArray.length; i++) {
newArray.push(theArray[i] * 2);
}
return newArray;
}
document.write("Array double = ",times2([1,2,3,4,5]).toString() , "<br>");
现在数组中有多少个元素都没有关系,它将它们乘以2。您可以选择任何数字而不是2。