题目:输出这个字符串数组中可以转成数据类型的新的字符串数组?
示例:
输入
[“567”,null,“u44”,“0”,1,“eleven”,“ten”,“99”]
输出:
[“567”,“0”,1,“99”]
因为:
let str = '["567",null,"u44","0",1,"eleven","ten","99"]';
console.log(typeof str); // string
说明str是一个字符串类型
我们可以用JSON.parse它可以把字符串数组转成数组对象
let str = '["567",null,"u44","0",1,"eleven","ten","99"]';
let s = JSON.parse(str)
console.log(Object.prototype.toString.call(s)); // [object Array]
所以此时我们可以
let str = '["567",null,"u44","0",1,"eleven","ten","99"]';
let res = []
ten(str)
function ten(str) {
let s = JSON.parse(str)
s.forEach((ele, i) => {
if (parseInt(ele).toString() !== 'NaN') {
res.push(ele)
}
})
}
console.log(JSON.stringify(res)); // ["567","0",1,"99"]
console.log(parseInt("123 456"));
parseInt解析一个字符串,并返回一个整数.
这个题目还有要注意的一点是,if里面的判断
parseInt(ele).toString() !== 'NaN'
我们将s中的元素ele强制类型转换转化为整数类型,此时如果字符串的第一个字符解析不出来,就会返回NaN,而我们知道
console.log(NaN === 'NaN'); //false
所以我们不能直接进行判断,我们需要用toString()函数,将其转化位字符串类型,这时它在字符串层面上就可以进行判断了
console.log(parseInt(null).toString() == 'NaN'); //true