将数字乘以数组

时间:2013-07-05 08:46:35

标签: javascript

从以下线程(Multiplying an array with a single value by a number?)我得到的信息是,通过执行[1, 2]*3,无法将数字乘以数组中的所有元素。但既然我必须这样做,我想知道是否有一种聪明的方法可以做到这一点?

我知道我可以编写一个迭代遍历所有元素的函数,并手动将数字乘以每个元素。但我想知道是否有更聪明的方法呢?

也许有些库实现了一些数学函数,我可以将数字乘以数组的所有元素?

或者你认为Array的map函数可以用于此目的吗?

4 个答案:

答案 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)

Jos de Jong's answer类似,如果您使用的是numericjs,则可以执行

var result = numeric.mul([1, 2], 3);

提供结果[3, 6]

答案 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。