【问题标题】:Map numbers String to Array of numbers将数字字符串映射到数字数组
【发布时间】:2017-01-31 09:17:40
【问题描述】:

我不明白为什么这段代码不产生数字。谁能解释一下?

a = '1 3 2 6 1 2'.split(' ');
a = a.map(Number);

for (item in a){
    console.log(typeof(item));
}

我在 Chrome 中的输出是 6 个字符串。

【问题讨论】:

  • item索引,而不是值。你的意思可能是for (item of a)
  • 正确。谢谢。我会将您的答案标记为解决方案,但这只是评论...
  • 不确定回答您的问题是否正确……因为是一个简单的错字(或“心理”错字),这几乎离题了。在提出问题之前,您应该做以下几件事:直接记录 item 以验证您是否迭代了值,记录整个数组 a(字符串和数字应该有颜色区别),验证如果 for-in 循环通过文档迭代值或索引。

标签: javascript types numbers


【解决方案1】:
a = '1 3 2 6 1 2'.split(' ');
a = a.map(Number);

console.log(a);

【讨论】:

  • 您尝试使用 typeof 项目,它是字符串,因为在您的情况下 a 是对象。
【解决方案2】:

您并没有像您预期的那样迭代 a 的内容,而是在 for..in 循环中的索引上进行迭代。

您可以参考 for..in 文档here。有趣的地方是他们谈论在数组上使用 for..in (以及在这种情况下您可能不应该如何使用)。

如果我理解正确,这就是我相信会产生您期望的结果:

for (item in a) { 
   console.log(typeof(a[item]));
}

同样,直接访问元素

for (item in a) { 
   console.log(a[item]);
}

【讨论】:

    【解决方案3】:

    你需要使用for..of不是for..in来迭代Arrays:

    arr = '1 2 3 4'.split(' ').map(Number) // ["1","2","3","4"] => [1,2,3,4]
    
    for( item of arr ) console.log( typeof(item), item )

    【讨论】:

      【解决方案4】:

      下面的代码会很有帮助。

      var num = 343532;
       var result=num.toString().split('').map(Number);
       console.log(result);

      【讨论】:

        猜你喜欢
        • 2021-11-15
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        • 2016-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-28
        相关资源
        最近更新 更多