Javascript - Apply trim function to each string in an array Javascript - Apply trim function to each string in an array javascript javascript

Javascript - Apply trim function to each string in an array


Or this can be solved with arrow functions:

x.map(s => s.trim());


String.prototype.trim.apply is the Function.prototype.apply method without being bound to trim. map will invoke it with the string, the index and the array as arguments and nothing (undefined) for the thisArg - however, apply expects to be called on functions:

var apply = String.prototype.trim.apply;apply.call(undefined, x[0], 0, x) // TypeError

What you can do is passing the trim function as the context for call:

[' aa ', ' bb '].map(Function.prototype.call, String.prototype.trim)// ['aa', 'bb']

What happens here is

var call = Function.prototype.call,    trim = String.prototype.trim;call.call(trim, x[0], 0, x) ≡      trim.call(x[0], 0, x) ≡            x[0].trim(0, x); // the arguments don't matter to trim


The simple variant without dependencies:

 for (var i = 0; i < array.length; i++) {     array[i] = array[i].trim() }

ES6 variant:

const newArray = oldArray.map(string => string.trim())

ES6 function variant:

const trimmedArray = array => array.map(string => string.trim())