2016-08-02 93 views
0

有這個很簡單.map功能爲什麼這個.MAP功能不起作用

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

這是有道理的,我就numbers執行映射功能,並提供將遍歷數組中的迭代每個元素的功能。

在下面這個例子中(所有這些都取自mozilla,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),我想我自己爲什麼要用Array.prototype.map.call,也許他們只是展示了不同的方式來完成相同的目標。

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

所以我改寫了這個作爲

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

除非我得到一個錯誤 「str.map不是一個函數(......)」 這是爲什麼?

+5

它應該是'str.split(「」).map()'?如果我沒有錯,['map()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)用於數組,而不是字符串 –

+1

'str'不是一個數組,所以它沒有'map'方法。 'Array.prototype.map.call'將字符串轉換爲數組。 – undefined

+0

@LambdaNinja你應該發佈這個答案。 – Santi

回答

4

這是因爲str是一個字符串,字符串沒有map()函數。

map()是數組類型的函數。

+0

我甚至認爲字符串鍵入從鏈中繼承的所有數組,但這很好理解。 –

相關問題