问题描述
我有一个要转换为整数数组的字符串数组(例如:“ 0”,“ 1”,“ 10”)。但是,我的数组没有改变。我确认在转换之前和之后,数组元素仍然包含字符串。有人可以解释为什么以及如何解决此问题吗?
for(var i=0; i<mydata.length;i++) {
console.log("Pre type ["+i+"] is "+typeof(mydata[i]))
if (typeof(mydata[i])==="string") {
mydata[i] = parseInt(mydata[i])
console.log("Converting element "+i)
}
console.log("Post type ["+i+"] is "+typeof(mydata[i]))
}
此代码在具有自己的Java解释器的QML组件中运行-QML对于这个问题似乎至关重要。调试语句显示:
qml: Pre type [0] is string
qml: Converting element 0
qml: Post type [0] is string
解决方法
使用Array#map遍历数组,并对数组的每个元素使用 parseInt 。
注意:正如Matt Morgan提到的那样(您可以在此处阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt#Description),最好使用parseInt作为第二个参数,以10的基数作为常规十进制的基数。
let arr = ["0","1","10",'17'];
let res = arr.map(el => parseInt(el,10));
console.log(res);