Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I multiply each member of an array by a scalar in javascript?

For example, how do I achieve the following without iterating over the array?

var a = [1, 2, 3] * 5;  // a should equal [5, 10, 15]
like image 694
stephjang Avatar asked Dec 10 '11 06:12

stephjang


2 Answers

Array.map() is available to IE users as of IE9, so if you don't care about compatibility at all you can use this:

var a = [1, 2, 3].map(function(x) { return x * 5; }); 

For JavaScript 1.8, this is as short as you can go:

var a = [1, 2, 3].map(function(x) x * 5); 

If you need maximal browser compatibility, you'll have to put up with a loop.

Either way you'll be iterating over the array; Array.map() just makes it less obvious you're doing so.

like image 195
BoltClock Avatar answered Sep 17 '22 15:09

BoltClock


In ECMAScript 6, you can use arrow functions:

var a = [1, 2, 3];
var b = a.map(x => x * 5); // <-------

console.log(b);   // [5, 10, 15]

Arrow functions are syntactic sugar for an inline function with lexical this binding:

// ES6
let array2 = array1.map(x => x * 5);
// ES5
var array2 = array1.map((function (x) { return x * 5; }).bind(this));

Therefore, if you need to support Internet Explorer or other old browsers (Edge understands ES6) you can use babeljs or TypeScript in your project to cross-compile your code to ES5 syntax.

like image 43
Leon Adler Avatar answered Sep 20 '22 15:09

Leon Adler