3

从以下线程(将单个值乘以一个数字的数组?)我得到的信息是不可能通过执行将一个数字与数组中的所有元素相乘[1, 2]*3。但既然我必须这样做,我想知道是否有一种聪明的方法可以做到这一点?

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

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

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

4

4 回答 4

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作为例子。

于 2013-07-05T08:49:29.550 回答
2

使用像math.js这样的库很容易,它带有矩阵支持。您可以执行以下操作:

var result = math.multiply([1, 2], 3);

或使用表达式解析器:

var result = math.eval('[1, 2] * 3');
于 2013-07-15T13:50:13.230 回答
0

Jos de Jong 的回答类似,如果您使用的是numericjs,您可以这样做

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

给出结果[3, 6]

于 2016-05-04T13:23:15.217 回答
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。

于 2018-06-20T13:36:58.707 回答