Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: modernize for 0.52.4

...

The reduce() operator applies a function, given as its first argument, to members of an array in left associative order. The function should take two arguments.  An optional second argument to the operator is the default value for the reduction.

...

If the default value is supplied, reduce() returns the result of applying function to the default value and the first item in the array, then applying the function to that result and the 2nd item, etc. If array contains no items, reduce() returns the default value.

...

languagejavascript
themeConfluence

...

The function (supplied to the reduce() operator as its first argument) should take at least two arguments. The first argument accumulates the result, starting with the second operator argument, if any, as described above. The function's second argument is each element, in turn, of the array upon which reduce is operating. There is also a third argument, which is the current index in the array, and a fourth argument, which is the entire array.

Code Block
languagejavascript
themeConfluence
c = [4, 5, 6];
c.reduce(function(a,b){a + b})     // returns 015
dc.reduce(function(a,b){a + b}, 1510) // returns 15 


m = [76];
m25
c.reduce(function(a,b){a +- b})     // returns 76
m.reduce(function(a,b){a -7; note left associativity


d = [];
d.reduce(function(a,b){a + b}, 15))     // returns 91

When using reduce() with arrays that contain values whose type differs from the return type of the function, the first argument to the function should have the same type as the returned value, and you must supply a default value that has the same type as the return value of the function.  For example:

Code Block
languagejavascript
themeConfluence
j = [{"a" : 4, "b" : 6},
     {"a" : 7, "f" : 8},
     {"a" : 1, "d" : 9}];
j 0
d.reduce(function(a,b){a + b}, 15) // returns 15 


m = [76];
m.reduce(function(a,b){a + b})     // returns 76
m.reduce(function(a,b){a *+ b{"a"}}}, 115) // returns 2891

reverse()

The reverse() operator reverses the order of the array. 

Code Block
languagejavascript
themeConfluence
c = [4,5,6];
c.reverse() // returns [6,5,4]

slice()

The slice() operator creates a new array based on the beginning and end indices passed as arguments:

...

When using reduce() with arrays that contain values whose type differs from the return type of the function, the first argument to the function should have the same type as the returned value, and you must supply a default value that has the same type as the return value of the function.  For example:

Code Block
languagejavascript
themeConfluence
j = [{"a" : 4, "b" : 6},
     {"a" : 7, "f" : 8},
     {"a" : 1, "d" : 9}];
j.reduce(function(a,b){a * b{"a"}}, 1) // returns 28

reverse()

The reverse() operator reverses the order of the array. 

Code Block
languagejavascript
themeConfluence
c = [4,5,6];
c.reverse() // returns [6,5,4]

slice()

The slice() operator creates a new array based on the beginning and end indices passed as arguments:

  • Array indices are zero-based.
  • The default for the beginning index is 0. slice(j) is the same as slice(0,j)
  • A reference to an OOB index (less than 0 or greater than the size of the array - 1) will return an empty array []

...

Code Block
languagejavascript
themeConfluence
a = [5, 3, 4, 1, 12]
c = a.sort();                         // c = [1, 12, 3, 4, 5]
d = a.sort("reverse");                // d = [5, 4, 3, 12, 1]
g = a.sort("numeric");                // d = [1, 3, 4, 5, 12]
h = a.sort("ciremun");                // d = [12, 5, 4, 3, 1]
e = a.sort(function(a, b) { a < b  => -1 |
                            a == b =>  0 |
                                       1
                          }); // e = [1, 3, 4, 5, 12]
f = a.sort(function(a, b) {a <=> b}; // f == [1, 3, 4,   }); // e = [1, 5, 12]

tail()

The tail() operator returns a new array that is the original array with the first element removed, or an empty array if the original array is empty. For example:

Code Block
languagejavascript
themeConfluence
a = [3, 4, 5, 12];
fc = a.sort(function(a, b) {a <=> b}tail(); // fc == [1, 3, 4, 5, 12]

tail()

The tail() operator returns a new array that is the original array with the first element removed, or an empty array if the original array is empty. For example:

Code Block
languagejavascript
themeConfluence
a = [3, 4, 5];
c = a.tail(); // c = [4, 5]4, 5]

Note

This note is for the operators which expect a function as their argument: all, any, collect, filter, map, none, and notall. The function provided is called once for each element of the target array, in order, and actually has three arguments passed to it: first, the array element, second, the current index in the array, and third, the entire target array. The last two are rarely if ever needed, but are available for those rare cases. Ordinarily, only the first argument, the array element, is needed.

For example, suppose you needed to know if any element in an array was less than its index in the array.

Code Block
a = [ 15, 7, 3, 1 ]
b = a.any(function(e,i){e < i}) // b == true because the element at index 3 (1) is less than 3