ste*_*ang 27 javascript arrays
例如,如何在不迭代数组的情况下实现以下功能?
var a = [1, 2, 3] * 5;  // a should equal [5, 10, 15]
Bol*_*ock 35
Array.map() 从IE9开始,IE用户可以使用,所以如果您根本不关心兼容性,可以使用:
var a = [1, 2, 3].map(function(x) { return x * 5; });
对于JavaScript 1.8,这是最短的:
var a = [1, 2, 3].map(function(x) x * 5);
如果您需要最大的浏览器兼容性,您将不得不忍受一个循环.
无论哪种方式,你都会迭代数组; Array.map()只是让你不那么明显.
Leo*_*ler 15
快进到2016年,当ECMAScript 6的支持越来越好时:
如果在项目中使用babeljs或TypeScript将代码交叉编译为ES5,或者您不需要支持旧浏览器和Internet Explorer(Edge支持),则可以使用ES6箭头函数:
var a = [1, 2, 3];
var b = a.map(x => x * 5); // <-------
console.log(b);   // [5, 10, 15]
箭头函数是具有词法绑定的内联函数的语法糖this:
// ES6
let array2 = array1.map(x => x * 5);
// ES5
var array2 = array1.map((function (x) { return x * 5; }).bind(this));
Bhe*_*ung 13
for(var i=0; i<a.length; i++) {
    a[i] *= 5;
}
Ecmascript 2016 (ES7) 定义了 SIMD 数学,它允许更快、更轻松地进行您想要的乘法运算。然而,截至目前,很少有浏览器支持 SIMD(只有 Firefox nightly builds 支持)[ 1 ]、[ 2 ]。它将如下所示:
var a = SIMD.Float32x4(1, 2, 3);
var b = SIMD.Float32x4(5, 5, 5);
SIMD.Float32x4.mul(a, b);  // Float32x4[5, 10, 15]
在 SIMD 得到广泛支持之前,您必须求助于使用映射
var a = [1, 2, 3].map(function(x) { return x * 5; });
所有现代浏览器都很好地支持它[ 3 ]。
var a, i, ii, term;
a = [1,2,3];
term = 5;
for (i=0, ii=a.length; i<ii; i++) {
  a[i] = a[i] * term;
}