Hello, This method maps over an array of items that meet a certain condition, otherwise just pass the item as is. It is a nice feature to have along with map, filter, and other functional methods on the array prototype. *Description* Map over an array of items: - If the item meets the condition, apply the callback - If the item does not meet the condition return the item without any transformation. *Example* ``` const exampleArray = [1, 2, 9, "C", "B", "C"]; exampleArray.mapOn(Math.sqrt, Number.isInteger); // [1, 1.414, 3, "A", "B", "C"]; ``` *Parameters* *- callback* Function that produces an element of the new Array, taking three arguments: * - currentValue* The current element being processed in the array. * - index* The index of the current element being processed in the array. * - array* The array map was called upon. *- condition* Function perdicate, if returned value is truthy, the callback is applied, taking three arguments: * - currentValue* The current element being processed in the array. * - index* The index of the current element being processed in the array. * - array* The array map was called upon. *- thisArg* Optional. Value to use as this when executing callback.
*Return value* A new array with each element being the result of the callback function if it meets the condition, otherwise the same item is returned. *Code / Polyfill * Array.prototype.mapOn = function(callback, condition, thisArg=this) { return this.map((currentValue, index, array) => { if(condition(currentValue, index, array)) { return callback.call(thisArg, currentValue, index, array) } return currentValue }) } *Link to Gist* https://gist.github.com/Bamieh/9fccbf4bc394d0da2fd0c8bb5d314476 Cheers! Ahmad Bamieh,
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss