面试题答案
一键面试function convertToNumber(arr) {
return arr.map((element) => {
if (typeof element ==='string') {
return parseFloat(element);
} else if (typeof element === 'boolean') {
return element? 1 : 0;
} else if (element === null) {
return null;
} else if (element === undefined) {
return undefined;
} else if (typeof element === 'object') {
return NaN;
} else if (typeof element === 'function') {
return NaN;
}
return NaN;
});
}
var arr = ['1', '2', true, null, undefined, {name: 'John'}, function(){}];
console.log(convertToNumber(arr));
转换过程中遇到的问题及解决方案
-
字符串转换:
- 问题:字符串可能包含非数字字符。
- 解决方案:使用
parseFloat
函数,它会尝试从字符串的开头解析数字,遇到非数字字符时停止。例如,parseFloat('123abc')
会返回123
。
-
布尔值转换:
- 问题:布尔值本身不是数字类型,需要特定的转换规则。
- 解决方案:将
true
转换为1
,false
转换为0
。
-
null
和undefined
:- 问题:它们无法直接转换为数字,并且在JavaScript中没有有意义的数字等价物。
- 解决方案:保持
null
和undefined
不变,不尝试转换。
-
对象和函数:
- 问题:对象和函数没有直接的数字表示。
- 解决方案:返回
NaN
表示无法转换。NaN
代表“不是一个数字”(Not a Number),用于表示无效的数字值。