笔试遇到的坑
1、将给出的数字反向输出,例:a=123, 输出321,b=500,输出5。
解题思路:将数字转为数组,从后往前push到新数组里面,将新数组转为字符串。
注意事项:
1)、数字是number类型,split(‘’)操作的是String类型,应先将number类型转为String类型再执行split(‘’)操作,这一步很容易忽视
2)、if( ”0“ )和if( 0 ) 不一样
let a = 123,
b = 500;
function Reverse(a) {
let arr = a.toString().split("");
let arr1 = [];
for (let i = arr.length - 1; i >= 0; i--) {
if (arr[i] != 0) {
arr1.push(arr[i]);
}
}
console.log(arr1.toString());
}
Reverse(b);
2、[1,2,3].map(parseInt)输出的结果。
[1,2,3].map(parseInt)可以写成如下方式:
[1,2,3].map(function(value,item,Array){
return parseInt(value,item,Array);
})
这个问题需要注意两个地方:
1、map(function()),其实function中包括三个参数:value,item,Array。
2、parseInt()包括两个参数:第一个为被解析的字符串,第二个为要解析成数值的基数。
下面是一些规则:
- 如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
- 如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
- 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
parseInt(1,0);//将十进制数1转化为十进制数,仍为1
parseInt(2,1);//将一进制数2(不存在)转化为十进制数,NaN
parseInt(3,2);
3、下列哪一项返回true:a:!![] ,b:!!''
console.log(!![]);// true
console.log(!!'');// false
看到下面的规则就懂了
[] 转为字符串是 "" // String([]) 返回""
[] 转为数字是 0 // Number([]) 返回0
[] 转为布尔值是 true // Boolean([]) 返回true
true 转为数字是 1 // Number(true) 返回1
false 转为数字是 0 // Number(false) 返回0
'' 转为布尔值是false
详细介绍和扩展可以看https://blog.csdn.net/u014465934/article/details/84642329这篇文章,超详解
|