人生戏 2022-05-04 13:57:52
看了这个题目后专门去研究了parseInt,parseInt的参数
parseInt(String,radix)里的radix根本就没有这么简单,radix根本就不是单纯的进制,详情看我简书的文章
parseInt详解-你以为radix指的进制吗?
parseInt('45', 5) //4 这个应该算是parseInt的内部处理,跟radix是不是进制数没有关系。
MDN文档上是这样写的:如果 parseInt 遇到的字符不是指定 radix 参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。 parseInt 将数字截断为整数值。 允许前导和尾随空格。
人生戏 2022-05-04 13:54:17
稍微对二分查找改造一下就可以,找到目标值之后左右滑动确定值
function findBoundary(source, target, start = 0, end = source.length - 1) { if (end - start === 1) { if (source[start] !== target) return -1; return leftAndRight(source, target, start); } const mid = start + Math.floor((end - start) / 2); if (source[mid] < target) { return findBoundary(source, target, mid, end); } else if (source[mid] > target) { return findBoundary(source, target, start, mid); } else { return leftAndRight(source, target, mid); } } function leftAndRight(source, target, mid) { let i = mid; let j = mid; while (source[i - 1] === target) { i--; } while (source[j + 1] === target) { j++; } return [i, j]; }
- 共 1 页
- 1
parseInt('11', "4") 这个为啥等于5呢,他4进制,11应该也不在其范围内么,怎么会得出的结果为5呢
第 2 题:['1', '2', '3'].map(parseInt) what & why ?