For those unfamiliar with JS: subValue (the first argument in the forEach callback) is the value contained at arr[index].
Entire block could literally be replaced with
arr[index] = self.cleanupMetadata(subValue)
.What about figuratively?
Figuratively the block could be replaced with a roll of duct tape and some chewing gum.
Trivially, could also just be a
retVal.map(self.cleanupMetadata)
But it can’t! (Maybe)
calling
map(obj.func)
will passfunc
but won’t set thethis
parameter correctly. If the called method usesthis
you will have a bad time.The code you actually want would be
retval.map(v => self.cleanupMetadata(v))
or the old-skoolretval.map(self.cleanupMetadata.bind(self))
.Also the first version reuses the Array which may be important, but even if not will likely result in better performance. (Although this is likely mitigated by making the array polymorphic depending on the return type of
cleanupMetadata
and the overhead offorEach
vsmap
.)Wow, isn’t JS a great language.