![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JS能力测评45题
小小布丁--pudding
一只爬行的小乌龟~~
展开
-
【JS能力测评45题--45】判断是否符合 USD 格式
需要考虑$后的首位为0的情况function isUSD(str) { let reg=/^\$(([1-9]\d{0,2}(,\d{3})*)|0)(\.\d{2})?$/; return reg.test(str);}原创 2019-11-19 16:49:10 · 147 阅读 · 0 评论 -
【JS能力测评45题--44】判断是否符合指定格式
注意^,$不能漏~~~function matchesPattern(str) { let reg=/^\d{3}-\d{3}-\d{4}$/; return reg.test(str);}原创 2019-11-19 16:26:42 · 133 阅读 · 0 评论 -
【JS能力测评45题--43】获取指定字符串
function captureThreeNumbers(str) { let arr=str.match(/\d{3}/); if(arr) return arr[0]; return false;}原创 2019-11-19 16:22:59 · 87 阅读 · 0 评论 -
【JS能力测评45题--42】判断是否以元音字母结尾
Way One:function endsWithVowel(str) { let reg=/(a|o|i|o|u)$/gi; return reg.test(str);}Way Two:function endsWithVowel(str) { return "aeiouAEIOU".indexOf(str[str.length-1])>-1;}...原创 2019-11-19 16:17:30 · 223 阅读 · 0 评论 -
【JS能力测评45题--41】检查重复字符串
在正则表达式中,利用()进行分组,使用斜杠加数字表示引用,\1就是引用第一个分组,\2就是引用第二个分组。将[a-zA-Z]做为一个分组,然后引用,就可以判断是否有连续重复的字母。function containsRepeatingLetter(str) { return /([a-zA-Z])\1/.test(str);}...原创 2019-11-19 16:02:31 · 89 阅读 · 0 评论 -
【JS能力测评45题--40】判断是否包含数字
function containsNumber(str) { for(let i=0;i<10;i++){ if(str.indexOf(i)!=-1) return true; } return false;}原创 2019-11-18 19:06:35 · 94 阅读 · 0 评论 -
【JS能力测评45题--39】属性遍历
从ES5开始,有三种方法可以列出对象的属性for(let I in obj)该方法依次访问一个对象及其原型链中所有可枚举的类型object.keys:返回一个数组,包括所有可枚举的属性名称object.getOwnPropertyNames:返回一个数组包含不可枚举的属性function iterate(obj) { return Object.getOwnPropert...原创 2019-11-18 19:00:30 · 84 阅读 · 0 评论 -
【JS能力测评45题--38】批量改变变量的属性
注意开头是constructor哈function alterObjects(constructor, greeting) { constructor.prototype.greeting=greeting;}原创 2019-11-18 17:28:24 · 69 阅读 · 0 评论 -
【JS能力测评45题--37】改变上下文
function alterContext(fn, obj) { return fn.call(obj);}原创 2019-11-18 17:23:13 · 120 阅读 · 0 评论 -
【JS能力测评45题--36】乘法
取两者小数点后的最大长度作为最终结果需要保留的小数位数function multiply(a, b) { let str_a=a.toString(); let str_b=b.toString(); let little_len=Math.max(str_a.length-str_a.indexOf('.')-1, ...原创 2019-11-18 17:15:35 · 86 阅读 · 0 评论 -
【JS能力测评45题--32】模块
function createModule(str1, str2) { var obj = { greeting : str1, name : str2, sayIt : function(){return this.greeting + ", " + this.nam...原创 2019-11-16 21:43:25 · 82 阅读 · 0 评论 -
【JS能力测评45题--35】二进制转换
function convertToBinary(num) { let str=num.toString(2); while(str.length<8) str="0"+str; return str;}原创 2019-11-16 21:33:41 · 122 阅读 · 0 评论 -
【JS能力测评45题--34】二进制转换
将2进制(字符串)转10进制parseInt(str,2);function base10(str) { return parseInt(str,2);}原创 2019-11-16 17:12:26 · 152 阅读 · 1 评论 -
【JS能力测评45题--33】二进制转换
注意将数字转为二进制的字符串,语法为:num.toString(2)function valueAtBit(num, bit) { let str=num.toString(2); return str[str.length-bit];}原创 2019-11-16 17:06:56 · 123 阅读 · 0 评论 -
【JS能力测评45题--31】且运算
function and(a, b) { return a&&b;}原创 2019-11-16 16:30:35 · 84 阅读 · 0 评论 -
【JS能力测评45题--30】或运算
function or(a, b) { return a||b;}原创 2019-11-16 16:29:09 · 102 阅读 · 0 评论 -
【JS能力测评45题--29】柯里化
function curryIt(fn) { return function a(xa){ return function b(xb){ return function c(xc){ return fn.call(this,xa,xb,xc); } } }}...原创 2019-11-16 16:24:59 · 69 阅读 · 0 评论 -
【JS能力测评45题--28】二次封装函数
上一题刚说伪数组arguments不能用数组的splice(),slice()等方法;这一节就带来福音,可以利用call(),apply(),bind()等方法将数组原型Array.prototype的方法绑给伪数组。function partialUsingArguments(fn) { let args1=Array.prototype.slice.call(arguments,...原创 2019-11-16 15:28:39 · 114 阅读 · 0 评论 -
【JS能力测评45题--27】使用apply调用函数
注意arguments是伪数组,不能使用数组的一系列方法,如splice,forEach...都不能用function callIt(fn) { let args=[]; for(let i=1;i<arguments.length;i++) args.push(arguments[i]); return fn.apply(null,args);}...原创 2019-11-16 14:51:21 · 129 阅读 · 1 评论 -
【JS能力测评45题--26】使用arguments
注意arguments只是伪数组,不能用forEach()function useArguments() { let res=0; for(let i=0;i<arguments.length;i++) res+=arguments[i]; return res;}原创 2019-11-16 14:41:30 · 94 阅读 · 0 评论 -
【JS能力测评45题--25】二次封装函数
跟着理解来就好function partial(fn, str1, str2) { return function(str3){ return fn(str1,str2,str3); }}原创 2019-11-15 13:59:45 · 110 阅读 · 0 评论 -
【JS能力测评45题--24】使用闭包
Way One.使用forEachfunction makeClosures(arr, fn) { let res=[]; arr.forEach(ele=>res.push(function(){ return fn(ele); })); return res;}Way Two.使用let关键字function makeCl...原创 2019-11-15 13:50:53 · 90 阅读 · 0 评论 -
【JS能力测评45题--23】返回函数
利用闭包function functionFunction(str) { return function(str1){ return str+", "+str1; }}原创 2019-11-15 13:25:56 · 85 阅读 · 0 评论 -
【JS能力测评45题--22】函数的上下文
一共三种方法,call,apply,bind这三种方法都可以改变函数的this指向,但要注意bind绑定仅改变this指向,不会调用函数,故若想其调用,别忘了加().function speak(fn, obj) { //return fn.apply(obj); //return fn.call(obj); return fn.bind(obj)();}...原创 2019-11-15 13:20:09 · 74 阅读 · 0 评论 -
【JS能力测评45题--21】将数组 arr 中的元素作为调用函数 fn 的参数
灵机一动,居然写对了。。。function argsAsArray(fn, arr) {return fn(...arr);}原创 2019-11-15 13:04:46 · 260 阅读 · 0 评论 -
【JS能力测评45题--20】流程控制
这一波操作非常机智,注意到几种情况之间的result是层层递进,字符串逐长的,可声明一个结果变量res.function fizzBuzz(num) { if(isNaN(num)||!num) return false; let res=""; if(num%3===0) res+="fizz"; if(num%5===0) res+="buzz"; ...原创 2019-11-14 15:07:56 · 120 阅读 · 0 评论 -
【JS能力测评45题--19】计时器
最后一个要求:返回一个对象很容易疏忽function count(start, end) { console.log(start++); let timer=setInterval(function(){ if(start<=end) console.log(start++); else clearInterval(timer); ...原创 2019-11-14 14:35:21 · 94 阅读 · 0 评论 -
【JS能力测评45题--18】完全等同
function identity(val1, val2) { return val1===val2;}原创 2019-11-14 14:20:23 · 82 阅读 · 0 评论 -
【JS能力测评45题--17】正确的使用 parseInt
按10进制去处理字符串,若遇到非数字字符,则停止处理后面的字符~~~function parse2Int(num) { return parseInt(num,10);}原创 2019-11-14 14:18:57 · 105 阅读 · 0 评论 -
【JS能力测评45题--16】正确的函数定义
else中的语句相当于将if中的function重写,须把方法赋值给一个变量,方法就不会被重写~~function functions(flag) { var getValue=null; if (flag) { getValue=function() { return 'a'; } } else { getValue=function(){ ...原创 2019-11-14 13:04:39 · 109 阅读 · 0 评论 -
【JS能力测评45题--15】避免全局变量
JS中,变量加var变为函数级作用域,啥都不加则为全局作用域。function globals() { var myObject = { name : 'Jory' }; return myObject;}原创 2019-11-13 14:39:08 · 83 阅读 · 0 评论 -
【JS能力测评45题--14】查找元素位置
function findAllOccurrences(arr, target) { let res=[]; arr.forEach((ele,index)=>{ if(arr[index]===target) res.push(index); }); return res;}原创 2019-11-13 14:33:01 · 73 阅读 · 0 评论 -
【JS能力测评45题--13】求二次方
Way one.function square(arr) { let res=[]; arr.forEach(ele=>res.push(ele*ele)); return res;}Way Two.利用mapfunction square(arr) { return arr.map(ele=>ele*ele);}原创 2019-11-13 14:28:47 · 85 阅读 · 0 评论 -
【JS能力测评45题--12】查找重复元素
Way One.自己的方法~利用Mapfunction duplicates(arr) { const map=new Map(); arr.forEach(ele=>{ if(!map.has(ele)) map.set(ele,1); else map.set(ele,map.get(ele)+1); }); let ...原创 2019-11-13 14:25:03 · 78 阅读 · 0 评论 -
【JS能力测评45题--11】计数
function count(arr, item) { let count=0; arr.forEach(ele=>{ if(ele===item) count++; }); return count;}原创 2019-11-13 14:01:40 · 112 阅读 · 0 评论 -
【JS能力测评45题--10】添加元素
function insert(arr, item, index) { let newArr=[]; arr.forEach(ele=>newArr.push(ele)); newArr.splice(index,0,item); return newArr;}原创 2019-11-12 20:15:11 · 74 阅读 · 0 评论 -
【JS能力测评45题--9】数组合并,
function concat(arr1, arr2) { return [...arr1,...arr2];}原创 2019-11-12 20:14:30 · 58 阅读 · 0 评论 -
【JS能力测评45题--8】删除数组第一个元素
function curtail(arr) { let newArr=[]; arr.forEach(ele=>newArr.push(ele)); newArr.shift(); return newArr;}原创 2019-11-12 20:10:33 · 101 阅读 · 0 评论 -
【JS能力测评45题--7】添加元素
function prepend(arr, item) { let newArr=[item]; arr.forEach(ele=>newArr.push(ele)); return newArr;}原创 2019-11-12 20:08:39 · 88 阅读 · 0 评论 -
【JS能力测评45题--6】删除数组最后一个元素
function truncate(arr) { let newArr=[]; arr.forEach(ele=>newArr.push(ele)); newArr.pop(); return newArr;}原创 2019-11-12 20:06:21 · 84 阅读 · 0 评论