来自Mozilla开发者网络:
[1,4,9].map(Math.sqrt)
Run Code Online (Sandbox Code Playgroud)
会产生:
[1,2,3]
Run Code Online (Sandbox Code Playgroud)
为什么这样做:
['1','2','3'].map(parseInt)
Run Code Online (Sandbox Code Playgroud)
屈服于此:
[1, NaN, NaN]
Run Code Online (Sandbox Code Playgroud)
我已经在Firefox 3.0.1和Chrome 0.3中进行了测试,只是作为免责声明,我知道这不是跨浏览器功能(没有IE).
我发现以下内容将达到预期的效果.但是,它仍然没有解释错误的行为parseInt.
['1','2','3'].map(function(i){return +i;}) // returns [1,2,3]
Run Code Online (Sandbox Code Playgroud) 使用Chrome控制台,这是我的输入和输出:
[0].map(Array);
[[0, 0, [0]]]; // output
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
编辑
这让我好奇的原因是因为像
[0].map(String);
Run Code Online (Sandbox Code Playgroud)
将返回
["0"];
Run Code Online (Sandbox Code Playgroud)
并不是
["0", "0", "String"]
Run Code Online (Sandbox Code Playgroud) console.log("1,2,3".split(",").map(parseInt))
Run Code Online (Sandbox Code Playgroud)
版画
[1, NaN, NaN]
Run Code Online (Sandbox Code Playgroud)
为什么?
在这里添加一些更多不必要的文本,使这个问题"满足SO质量标准",无论这意味着什么.
我已经开发了这个codepen(http://codepen.io/PiotrBerebecki/pen/qZjojV?editors=0010)试图解决以下JavaScript的问题:
给定非负整数,返回一个包含相反顺序的独立数字列表的数组.示例:348597 =>正确的解决方案应该是[7,9,5,8,4,3]
下面的函数显然不正确,因为它返回["7","9","5","8","4","3"] - 正确的顺序,但带引号.我怎么能修改它以便它返回[7,9,5,8,4,3]?
function digitize(n) {
var initialArray = (""+n).split('');
var reversedArray = [];
for (var i = initialArray.length - 1; i >= 0; i--) {
reversedArray[i] = initialArray.shift();
}
return reversedArray;
}
Run Code Online (Sandbox Code Playgroud)