Actually flatMap isn't even needed. My question is, why use this over a normal map with a conditional? It doesn't seem to really save any space.
Is there any prior art? Do a lot of people use this kind of thing in ramda, lodash, etc? On Oct 27, 2017 09:11, "Ahmad Bamieh" <[email protected]> wrote: Can you elaborate? `mapOn` will apply the map only if the item passes the condition, `flatMap` has a different use case. I'm referring to this flatMap implementation: https://gist.github.com/ samgiles/762ee337dff48623e729 Cheers! Ahmad Bamieh, On Fri, Oct 27, 2017 at 6:02 PM, Peter Jaszkowiak <[email protected]> wrote: > I think flatMap fills this use case pretty well. > > On Oct 27, 2017 08:56, "Ahmad Bamieh" <[email protected]> wrote: > >> 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 >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> >>
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

