arr.map(){}-数组迭代-N进制运算

let arr=[1,2,3,4];
arr=arr.map(parseInt);
console.log(arr);

知识点

1、数组的迭代

  • 数组的迭代方法(遍历数组中的每一项做一些特殊的处理)
  • forEach 遍历数组每一项(数组中有多少项,就会触发执行多少次回调函数,每一次把迭代的当前项和当前项的索引传递给回调函数)
  • mapforEach类似,只不过支持返回值,回调函数中的返回值会把当前迭代的这一项替换掉
  • find 迭代数据每一项的时候,只要有一项在回调函数中返回TRUE则找到内容,后面不会在迭代了,返回的是找到的这一项
  • filter 迭代每一项的时候,回调函数中所有返回TRUE的这一项获取到,以新数组返回(包含筛选出来的所有项)
  • everysome类似,但是回调函数都返回TRUE,整体才是TRUE
  • some 验证数组中是否存在符合某个筛选条件的,只要有一个符合结果就是TRUE
  • reduce 上一次回调函数中运算的结果会作为下一次处理的信息
	 let arr=[1,2,3,4]
     let total=arr.reduce(function(n,item){
        return n+item;
    },0);//10

map遍历数组的每一项,执行回调函数(也是匿名函数function()),将每一次迭代的值item和索引index传给匿名函数,返回一个新数组。

let arr=[1,2,3,4];
lat arr2=arr.map(function(item,index){
	console.log(item,index);
	return item
})

2、parseInt([value])和parseInt([value],[radix])

// parseInt([value]): 把VALUE转换为数字,要求VALUE是字符串(不是字符串先默认转换为字符串),从字符串左边开始查找,找到有效数字字符转换为数字(遇到一个非有效的数字字符,则停止查找)
// parseInt([value],[radix]):首先[VALUE]是这个字符串,他是把个值看做[RADIX]这个进制,然后最后转换为10进制的数字
// radix省略或者为0,则radix默认按照10进行处理(特殊:字符串以 0x/oX 开头,radix默认按照16进行处理)
// radix不在2~36之间,最后结果都为NaN
// parseInt(1,0) =>1
// parseInt(2,1) =>NaN
// parseInt(3,2) =>NaN
// parseInt(4,3) =>NaN

parseInt([value]):把value转化为数字,要求value是字符串(不是字符串默认转换为字符串),从字符串左边开始查找,找到有效数字字符转化为数字(遇到非有效数字字符,则停止找,返回NaN)

// parseInt([value],[radix]):首先[value]是这个字符串,他是把个值看做[radix]这个进制,然后最后转换为10进制的数字
// radix省略或者为0,则radix默认按照10进行处理(特殊:字符串以 0x/oX 开头,radix默认按照16进行处理)
// radix不在2~36之间,最后结果都为NaN

 parseInt(1,0) =>1   //radix=0,当做10进制计算结果为1
 parseInt(2,1) =>NaN //radix=1,不在2-36范围内,结果NaN
 parseInt(3,2) =>NaN //radix=2,当成2进制计算,3>2,结果NaN
 parseInt(4,3) =>NaN //radix=3,当成3进制计算,4>3,计算NaN

3、N进制计算

 `parseInt('2AF5', 16);`

//分析:把’2AF5’当做16进制,16进制值有效范围0-9ABCDEF(A代表10,B代表11,C代表12,D代表13,E代表14,F代表15),最后转换为10进制
=> 计算时从末尾开始进行幂运算
=> 5*16^0 + 15*16^1 +10*16^2 +2*16^3
=>5*1 + 15*16 + 10*16*16 + 2*16*16*16 = 10997


带小数点的N进制元素,如以下8进制运算

 '72.45'  -> 58.578125

=>2*8^1 + 7*8^2 + 4*8^(-1) + 5*8^(-2)
=>2*1 + 7*8 + 4*(1/8) + 5*(1/(8*8))

 parseInt('231', 3);

// 3进制只能是 0~2 所以查找到3的时候,发现已经不是3进制的范畴了,则不再继续查找
// 把2当做3进制,最后转换为十进制
// 2*3^0 = 2

 parseInt('23461', 5);

// // ‘234’ 看做 5进制,转换为10进制
// 4+35+25*5 = 69


面试考察要点

1、数组迭代方法、源码如何实现
2、N进制转换
3、parseInt和parseFloat区别:

  • 默认只传递一个值的时候,float多识别一个小数点
  • parseInt支持 进制基础,parseInt传递两个参数时,支持 进制基础
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值