Ho un allineamentoCome passare il metodo definito il prototipo alla Array.map come callback
var arr = [' A ', ' b ', 'c'];
e voglio trim
gli spazi da ciascuna delle elemento dalla matrice.
può essere fatto utilizzando Array.map
come
arr.map(function(el) {
return el.trim();
});
mi incuriosisce passando la funzione di trim
/toLowerCase
direttamente al map
come funzione di callback, come arr.map(Math.max.apply.bind(Math.max, null)); per ottenere l'elemento massimo da ogni sottoarray o arr.map(Number); per castare ogni elemento su Numero.
Ho provato
arr.map(String.prototype.trim.apply);
ma sta gettando errore
Uncaught TypeError: Function.prototype.apply was called on undefined, which is a undefined and not a function
Mi aspetto che String.prototype.trim.apply
dovrebbe essere chiamato per ogni elemento della matrice con il contesto impostato l'elemento da array (passato a apply
);
Ho anche provato diverse combinazioni di apply
, call
e bind
senza successo.
- Perché la funzione sul prototipo non è possibile fare riferimento quando si utilizza
map
- Come funzione può essere passato come parametro per
map
sono confusa sul motivo per cui arr.map (funzione ... Lavori mentre arr.map (String ... getta "arr non è definito." In – djechlin
Firefox dice "TypeError:' Function.prototype.apply' chiamato incompatible 'undefined'". – Xufox
var f = String.prototype.trim.call; f ('3'); genera errore, anche se String.prototype.trim .call ('3') funziona e typeof f === 'function'. Nessuna idea del perché. – djechlin