Apply a callback to an array: Difference between revisions

→‎{{header|JavaScript}}: fix totally bogus ES3 map, adds ES5 and ES6 versions
(→‎{{header|JavaScript}}: fix totally bogus ES3 map, adds ES5 and ES6 versions)
Line 1,106:
=={{header|JavaScript}}==
 
===ES3===
Portable technique:
 
<lang javascript>function map(a, func) {
for (var iret in= a)[];
for (var a[i] = func(0; i < a[.length; i]++); {
ret[i] = func(a[i]);
}
return ret;
}
 
var a = map([1, 2, 3, 4, 5], function(v) { return v * v; });</lang>
map(a, function(v) { return v * v; });</lang>
 
{{libheader|BeyondJS}}
With the [http://w3future.com/html/beyondJS/ BeyondJS] library:
 
<lang javascript>var a = (1).to(10).collect(Math.pow.curry(undefined,2));</lang>
 
With Firefox 2.0:
 
<lang javascript>function cube(num) {
return Math.pow(num, 3);
}
 
===ES5===
var numbers = [1, 2, 3, 4, 5];
map(a<lang javascript>[1, 2, 3, 4, 5].map(function(v) { return v * v; });</lang>
 
// get results of calling cube on every element
var cubes1 = numbers.map(cube);
 
===ES6===
// display each result in a separate dialog
<lang javascript>Functional.map('x*x*x', [1, 2, 3, 4, 5].map(v => v * v);</lang>
cubes1.forEach(alert);
 
The result is always:
// array comprehension
var cubes2 = [cube(n) for each (n in numbers)];
var cubes3 = [n * n * n for each (n in numbers)];</lang>
 
<pre>[1, 4, 9, 16, 25]</pre>
{{libheader|Functional}}
<lang javascript>Functional.map('x*x*x', [1,2,3,4,5])</lang>
 
=={{header|TIScript}}==
Anonymous user