Array.prototype.forEach
is probably the most used method of the arrays. That is, it is the native implementation of _.each
, or for example, of the $.each
utilities. As parameters, forEach
expects an iteratee
callback function and optionally a context in which you want to execute the callback. It passes to the callback function an element value, an index, and the entire array. The same parameter syntax is used for most array manipulation methods. Note that jQuery's $.each
has the inverted callback parameters order:
Array.prototype.map
produces a new array by transforming the elements of a given array:
Array.prototype.filter
returns an array, which consists of given array values that meet the callback's condition:
Array.prototype.reduce
/Array.prototype.reduceRight
retrieves the product of values in an array. The method expects a callback function and optionally the initial value as arguments. The callback function receive four parameters: the accumulative value, current one, index and original array. So we can, for an instance, increment the accumulative value by the current one (return acc += cur;) and, thus, we will get the sum of array values.
Besides calculating with these methods, we can concatenate string values or arrays:
Array.prototype.some
tests whether any (or some) values of a given array meet the callback condition:
In this example, we checked whether any of the bar array values are available in the foo
array. For testability, we need to pass a reference of the foo
array into the callback. Here we inject it as context. If we need to pass more references, we would push them in a key-value object.
As you probably noticed, we used in this example Array.prototype.indexOf
. The method works the same as String.prototype.indexOf
. This returns an index of the match found or -1
.
Array.prototype.every
tests whether every value of a given array meets the callback condition:
If you are still concerned about support for these methods in a legacy browser as old as IE6-7, you can simply shim them with https://github.com/es-shims/es5-shim.
In ES6, we get just a few new methods that look rather like shortcuts over the existing functionality.
Array.prototype.fill
populates an array with a given value, as follows:
Array.prototype.includes
explicitly checks whether a given value exists in the array. Well, it is the same as arr.indexOf( val ) !== -1
, as shown here:
Array.prototype.find
filters out a single value matching the callback condition. Again, it's what we can get with Array.prototype.filter
. The only difference is that the filter method returns either an array or a null value. In this case, this returns a single element array, as follows: