2016-08-02 17 views
0
Arbeit

gibt es diese ganz einfach .map FunktionWarum funktioniert die .map Funktion nicht

var numbers = [1, 4, 9]; 
var roots = numbers.map(Math.sqrt); 

Dies macht Sinn, fahre ich numbers auf die Karte Funktion und eine Funktion zur Verfügung stellen, die in der Anordnung auf jedes Element durchlaufen werden .

In diesem nächsten Beispiel (alle aus mozilla, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), dachte ich mir, warum würden wir Array.prototype.map.call verwenden, vielleicht zeigen sie nur verschiedene Möglichkeiten, um das gleiche Ziel zu erreichen.

var str = '12345'; 
Array.prototype.map.call(str, function(x) { 
    return x; 
}).reverse().join(''); 

So schrieb ich dies als

var str = '12345'; 
var stringy = str.map(function(x) { 
    return x; 
}).reverse().join(''); 

Außer, dass ich einen Fehler "str.map ist keine Funktion (...)" Warum ist das?

+5

Sollte es 'str.split (" ") sein. Map()'? Wenn ich nicht falsch liege, ist [map() '] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) für Arrays, keine Strings –

+1

'str' ist kein Array, also hat es keine' map' Methode. 'Array.prototype.map.call' wandelt die Zeichenfolge in ein Array um. – undefined

+0

@LambdaNinja Sie sollten dies als Antwort posten. – Santi

Antwort

4

Dies liegt daran, str ist eine Zeichenfolge, und Zeichenfolgen haben nicht die map() Funktion.

map() ist eine Funktion des Array-Typs.

+0

Ich dachte sogar die Zeichenfolge Geben Sie den ganzen Weg ein, den die Kette von Array geerbt hat, aber das ist gut zu wissen. –

Verwandte Themen