
前端必刷75题
前端大挑战
钧桐
怕什么真理无穷?进一寸有进一寸的欢喜!
展开
-
[前端必刷75题]60.判断是否符合USD格式
判断是否符合USD格式描述代码描述给定字符串 str,检查其是否符合美元书写格式1、以 $ 开始2、整数部分,从个位起,满 3 个数字用 , 分隔3、如果为小数,则小数部分长度为 24、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3代码(\.\d{2})? 表示小数部分可有可无,如果有,为.+两位数字(\,\d{3})* 表示为,+三位数字,没有或者多个\$\d{1,3} 表示$+1-3位数字^ $表示首原创 2021-10-14 10:01:51 · 179 阅读 · 0 评论 -
[前端必刷75题]59.判断是否符合指定格式
判断是否符合指定格式描述代码描述给定字符串 str,检查其是否符合如下格式1、XXX-XXX-XXXX2、其中 X 为 Number 类型代码直接正则,要注意要指定首尾的匹配function matchesPattern(str) { let reg=/^\d{3}-\d{3}-\d{4}$/ return reg.test(str)}...原创 2021-10-12 09:32:54 · 515 阅读 · 0 评论 -
[前端必刷75题]58.获取指定字符串
获取指定字符串描述代码描述给定字符串 str,检查其是否包含 连续3个数字,请使用正则表达式实现。1、如果包含,返回最先出现的 3 个数字的字符串2、如果不包含,返回 false代码利用match和正则拿出数组就可以了!function captureThreeNumbers(str) { let arr=str.match(/\d{3}/) if(arr) return arr[0] else return false}...原创 2021-10-12 09:28:19 · 168 阅读 · 0 评论 -
[前端必刷75题]57.判断是否以元音字母结尾
判断是否以元音字母结尾描述直接用正则描述给定字符串 str,检查其是否以元音字母结尾1、元音字母包括 a,e,i,o,u,以及对应的大写2、包含返回 true,否则返回 false直接用正则$表示末尾匹配/i表示忽略大小写function endsWithVowel(str) { return /[a,e,i,o,u]$/i.test(str)}...原创 2021-10-12 09:24:34 · 167 阅读 · 0 评论 -
[前端必刷75题]56.检查重复字符串
检查重复字符串描述思路与代码每个点判断就好使用正则表达式描述给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z)(重复数字不算),包含返回 true,否则返回 false思路与代码每个点判断就好function containsRepeatingLetter(str) { for(let i=1;i<str.length;i++){ if(str[i-1]===str[i]&&str[i]>'A'&&str[i]<原创 2021-10-11 10:17:48 · 4554 阅读 · 0 评论 -
[前端必刷75题]55.判断是否包含数字
判断是否包含数字描述思路和代码很容易想到判断每个字符使用正则表达式描述给定字符串 str,检查其是否包含数字,包含返回 true,否则返回 false思路和代码很容易想到判断每个字符function containsNumber(str) { for(let i=0;i<str.length;i++){ if(Number(str[i])) return true } return false}使用正则表达式function containsN原创 2021-10-11 10:05:10 · 259 阅读 · 0 评论 -
[前端必刷75题]54.属性遍历
属性遍历描述代码Object.keys方法hasOwnProperty方法getOwnPropertyNames方法描述找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)1、返回数组,格式为 key: value2、结果数组不要求顺序代码Object.keys方法function iterate(obj) { return Object.keys(obj).map((key)=>{ return key+": "+obj[key]原创 2021-10-09 09:26:24 · 97 阅读 · 0 评论 -
[前端必刷75题]53.批量改变对象的属性
批量改变对象的属性描述思路与代码描述给定一个构造函数 constructor,请完成 alterObjects 方法,将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量。思路与代码这个题其实就是考原型链的问题吧!思路:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。function alterObjects(constructor, greeting) { constructor.原创 2021-10-09 09:11:03 · 141 阅读 · 0 评论 -
[前端必刷75题]52.改变上下文
改变上下文描述代码描述将函数 fn 的执行上下文改为 obj,返回 fn 执行后的值代码三种方法,apply,call,bind,注意的是,bind是之后是一个函数,要写成自执行函数的形式function alterContext(fn, obj) { //return fn.apply(obj,arguments) //return fn.call(obj,...arguments) return fn.bind(obj)() }...原创 2021-10-09 09:08:11 · 122 阅读 · 0 评论 -
[前端必刷75题]51.乘法
乘法描述示例代码描述求 a 和 b 相乘的值,a 和 b 可能是小数,需要注意结果的精度问题示例输入:3, 0.0001输出:0.0003代码function multiply(a, b) { a=a.toString() b=b.toString() let alen=a.substring(a.indexOf('.')+1).length let blen=b.substring(b.indexOf('.')+1).length return原创 2021-10-08 09:47:12 · 109 阅读 · 0 评论 -
[前端必刷75题]48.49.50.二进制转换
二进制转换描述示例1代码描述获取数字num二进制形式第bit位的值。注意:1、bit 从 1 开始2、返回 0 或 13、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1示例1输入:128, 8输出:1代码toString转换进制function valueAtBit(num, bit) { let newNum=num.toString(2).split('') return newNum[newNum.length-1-(bit-1)]}原创 2021-10-08 09:27:59 · 153 阅读 · 0 评论 -
[前端必刷75题]47.模块
47.模块描述代码直接let原型模式构造函数模式创建对象模式描述完成函数 createModule,调用之后满足如下要求:1、返回一个对象2、对象的 greeting 属性值等于 str1, name 属性值等于 str23、对象存在一个 sayIt 方法,该方法返回的字符串为 greeting属性值 + ', ’ + name属性值代码直接letfunction createModule(str1, str2) { let obj={ greeting:str1原创 2021-09-30 09:25:07 · 124 阅读 · 0 评论 -
[前端必刷75题]45.46.或且运算
或运算描述好low的题目描述返回参数 a 和 b 的逻辑或运算结果好low的题目function or(a, b) { return a||b}原创 2021-09-30 09:14:04 · 92 阅读 · 0 评论 -
[前端必刷75题]44.柯里化
柯里化描述什么是柯里化?代码描述已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件:1、返回一个函数 a,a 的 length 属性值为 1(即显式声明 a 接收一个参数)2、调用 a 之后,返回一个函数 b, b 的 length 属性值为 13、调用 b 之后,返回一个函数 c, c 的 length 属性值为 14、调用 c 之后,返回的结果与调用 fn 的返回值一致5、fn 的参数依次为函数 a, b, c 的调用参数什么是柯里化?柯里化,用一句话解释原创 2021-09-29 10:54:47 · 136 阅读 · 0 评论 -
[前端必刷75题]43.二次封装函数
二次封装函数描述代码描述实现函数 partialUsingArguments,调用之后满足如下条件:1、返回一个函数 result2、调用 result 之后,返回的结果与调用函数 fn 的结果一致3、fn 的调用参数为 partialUsingArguments 的第一个参数之后的全部参数以及 result 的调用参数代码就是拿参数,然后又拿参数,传进去就行了function partialUsingArguments(fn) { let arr=[].slice.call(a原创 2021-09-29 10:43:15 · 138 阅读 · 0 评论 -
[前端必刷75题]42.使用apply调用函数
使用apply调用函数描述代码描述实现函数 callIt,调用之后满足如下条件1、返回的结果为调用 fn 之后的结果2、fn 的调用参数为 callIt 的第一个参数之后的全部参数代码1.使用apply2.arguments不是数组要先转换再slice3.可以用slice.callfunction callIt(fn) { return fn.apply(this,[].slice.call(arguments,1))}...原创 2021-09-28 09:00:27 · 103 阅读 · 0 评论 -
[前端必刷75题]41.使用arguments
使用arguments描述示例1代码循环reduce描述函数 useArguments 可以接收 1 个及以上的参数。请实现函数 useArguments,返回所有调用参数相加后的结果。本题的测试参数全部为 Number 类型,不需考虑参数转换。示例1输入:1, 2, 3, 4输出:10代码循环function useArguments() { let sum=0 for(let i=0;i<arguments.length;i++){ sum+=原创 2021-09-28 08:53:23 · 101 阅读 · 0 评论 -
[前端必刷75题]40.二次封装函数
二次封装函数描述代码匿名函数bindapplycall描述已知函数 fn 执行需要 3 个参数。请实现函数 partial,调用之后满足如下条件:1、返回一个函数 result,该函数接受一个参数2、执行 result(str3) ,返回的结果与 fn(str1, str2, str3) 一致代码匿名函数function partial(fn, str1, str2) { return function(str3){ return fn(str1,str2,str3原创 2021-09-27 10:22:57 · 96 阅读 · 0 评论 -
[前端必刷75题]39使用闭包
使用闭包描述代码描述实现函数 makeClosures,调用之后满足如下条件:1、返回一个函数数组 result,长度与 arr 相同2、运行 result 中第 i 个函数,即 resulti,结果与 fn(arr[i]) 相同代码中间写了一个匿名函数是为了立即执行它function makeClosures(arr, fn) { let result=[] arr.forEach(function(e){ result.push(function(num原创 2021-09-27 10:13:44 · 88 阅读 · 0 评论 -
[前端必刷75题]38.返回函数
返回函数描述代码描述实现函数 functionFunction,调用之后满足如下条件:1、返回值为一个函数 f2、调用返回的函数 f,返回值为按照调用顺序的参数拼接,拼接字符为英文逗号加一个空格,即 ', ’3、所有函数的参数数量为 1,且均为 String 类型代码利用闭包来做function functionFunction(str) { return function f(arr){ return str+', '+arr }}...原创 2021-09-26 10:28:43 · 123 阅读 · 0 评论 -
[前端必刷75题]37.函数的上下文
函数的上下文描述代码bindapplycall挂载描述将函数 fn 的执行上下文改为 obj 对象代码bindfunction speak(fn, obj) { return fn.bind(obj)()}applyfunction speak(fn, obj) { return fn.apply(obj)}callfunction speak(fn, obj) { return fn.call(obj)}挂载function speak(fn, o原创 2021-09-26 10:02:06 · 84 阅读 · 0 评论 -
[前端必刷75题]36.函数传参
函数传参描述代码applycall描述将数组 arr 中的元素作为调用函数 fn 的参数代码applyfunction argsAsArray(fn, arr) { return fn.apply(this,arr)}callfunction argsAsArray(fn, arr) { return fn.call(this,...arr)}原创 2021-09-26 09:50:45 · 103 阅读 · 0 评论 -
[前端必刷75题]35.流程控制
流程控制描述示例1代码描述实现 fizzBuzz 函数,参数 num 与返回值的关系如下:1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz2、如果 num 能被 3 整除,返回字符串 fizz3、如果 num 能被 5 整除,返回字符串 buzz4、如果参数为空或者不是 Number 类型,返回 false5、其余情况,返回参数 num示例1输入:15输出:fizzbuzz代码function fizzBuzz(num) { if (num原创 2021-09-25 08:42:38 · 100 阅读 · 0 评论 -
[前端必刷75题]计时器
计时器描述代码setIntervalsetTimeout描述实现一个打点计时器,要求1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 12、返回的对象中需要包含一个 cancel 方法,用于停止定时操作3、第一个数需要立即输出代码setIntervalfunction count(start, end) { console.log(start++) timer=setInterval(fu原创 2021-09-25 08:30:55 · 106 阅读 · 0 评论 -
[前端必刷75题]33.完全等同
完全等同描述利用'==='判断,不进行类型转换,判断完全相等利用ES6 Object.is()方法进行判断描述判断val1和val2是否完全等同利用’==='判断,不进行类型转换,判断完全相等function identity(val1, val2) { return val1===val2}利用ES6 Object.is()方法进行判断function identity(val1, val2) { return Object.is(val1,val2)}...原创 2021-09-25 08:11:23 · 111 阅读 · 0 评论 -
[前端必刷75题]32.正确使用parseInt
正确使用parseInt描述示例1示例2示例3parseInt分析代码描述修改js代码中parseInt的调用方式,使之通过全部测试用例function parse2Int(num) { return parseInt(num);}示例1输入:'12'输出:12示例2输入:'12px'输出:12示例3输入:'0x12'输出:0parseIntparseInt() 函数可解析一个字符串,并返回一个整数。当参数 radix 的值为 0,或没有设置该参数原创 2021-09-24 09:38:40 · 176 阅读 · 0 评论 -
[前端必刷75题]31.正确的函数定义
正确的函数定义描述代码分析描述请修胥给定的js代码中,函数定义存在的问题function functions(flag) { if (flag) { function getValue() { return 'a'; } } else { function getValue() { return 'b'; } } return getValue();}首先,这个代码…写得的很沙雕 多此一举代码我直接改成一句,测试通过function原创 2021-09-24 09:27:20 · 87 阅读 · 0 评论 -
[前端必刷75题]30.避免全局变量
避免全局变量描述原代码题解分析代码描述给定的 js 代码中存在全局变量,请修复原代码function globals() { myObject = { name : 'Jory' }; return myObject;}题解分析前面没有var和let,出现了变量提升,导致局部变量变成了全局变量代码function globals() { let myObject = { name : 'Jory' }; ret原创 2021-09-23 09:21:42 · 147 阅读 · 0 评论 -
[前端必刷75题]29.查找元素位置
查找元素位置描述示例1代码filter()forEach+pushindexOf描述在数组 arr 中,查找值与 item 相等的元素出现的所有位置示例1输入:['a','b','c','d','e','f','a','b','c'] 'a'输出:[0, 6]代码filter()function findAllOccurrences(arr, target) { let result=[] arr.filter(function(item,index){原创 2021-09-23 09:14:47 · 138 阅读 · 0 评论 -
[前端必刷75题]28.二次方
二次方描述代码pushmap描述为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组代码pushfunction square(arr) { let newArr=[] arr.forEach(item=>{ newArr.push(item*item) }) return newArr}mapfunction square(arr) { return arr.map(function(e){原创 2021-09-22 09:55:35 · 92 阅读 · 0 评论 -
[前端必刷75题]27.查找重复元素
查找重复元素双数组排序遍历set()去重检查filter()双数组排序遍历function duplicates(arr) { let a=arr.sort(function(a,b){ return a-b }) let b=[] for(let i in a){ if(a[i]==a[i-1]&&b.indexOf(a[i])==-1) b.push(a[i]) } return b}set()去重原创 2021-09-22 09:44:00 · 119 阅读 · 0 评论 -
[前端必刷75题]26.计数
计数描述代码forEach遍历filter()reduce()map()描述统计数组 arr 中值等于 item 的元素出现的次数代码forEach遍历function count(arr, item) { let ans=0 arr.forEach(i=>{ if(i==item) ans++ }) return ans}filter()function count(arr, item) { let ans=arr.filte原创 2021-09-22 09:29:24 · 90 阅读 · 0 评论 -
[前端必刷75题]24.数组合并
数组合并concatslice+push.applyslice+pushconcatfunction concat(arr1, arr2) { return arr1.concat(arr2)}slice+push.applyfunction concat(arr1, arr2) { let newArr=arr1.slice(0); [].push.apply(newArr,arr2) return newArr}slice+pushfunction c原创 2021-09-21 09:13:45 · 105 阅读 · 0 评论 -
[前端必刷75题]21.23.删除元素
删除数组最后一个元素删除元素最后一个元素slice()filter()push.apply+popjoin+split+popconcat+pop迭代拷贝删除数组的第一个元素slicefilterpush.apply+shiftjoin+split+shiftconcat+shift迭代拷贝删除元素最后一个元素slice()function truncate(arr) { return arr.slice(0,-1)}filter()function truncate(arr) {原创 2021-09-20 09:24:49 · 97 阅读 · 0 评论 -
[前端必刷75题]20.22.25.添加元素
添加元素在尾部添加普通的迭代拷贝slice浅拷贝+pushconcat()在头部添加普通的迭代拷贝concat()push.applyslice+unshiftjoin+split+unshift在尾部添加普通的迭代拷贝function append(arr, item) { let newArr=[] arr.forEach(item=>{ newArr.push(item) }) newArr.push(item) return new原创 2021-09-20 09:09:19 · 133 阅读 · 0 评论 -
[前端必刷75题]18.19.移除数组中的元素
移除数组中的元素描述题解forEach()splice()filter()描述移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组题解forEach()function remove(arr, item) { let newarr=[] arr.forEach(i=>{ if(i!=item) newarr.push(i) }) return newarr}splice()function r原创 2021-09-19 09:26:23 · 176 阅读 · 0 评论 -
[前端必刷75题]数组求和(解法如此之多)
数组求和递归循环reduce()eval()递归function sum(arr) { var len=arr.length if(len==0) return 0 else if(len==1) return arr[0] else return arr[0]+sum(arr.slice(1))//删除第一个元素}循环function sum(arr) { let sum=0 arr.forEach(item=>{ sum+原创 2021-09-19 09:18:53 · 229 阅读 · 0 评论 -
[前端必刷75题]16.查找数组元素位置
查找数组元素位置描述输出描述示例1js代码描述找出元素 item 在给定数组 arr 中的位置输出描述如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1示例1输入:[ 1, 2, 3, 4 ], 3输出:2js代码function indexOf(arr, item) { if(Array.prototype.indexOf){ return arr.indexOf(item)//自带indexof方法 }else{//如果不存在,手撕原创 2021-09-16 08:43:31 · 274 阅读 · 0 评论 -
[前端必刷75题]15.设置文字颜色
设置文字颜色描述解法css解法行内样式内嵌式js解法描述请使用嵌入样式将所有p标签设置为红色文字<p>欢迎来到牛客网</p><p>在这里,我们为你提供了IT名企的笔试面试题库</p><p>在这里,我们以题会友</p>解法css解法p{ color:red}行内样式<p style="color:red">欢迎来到牛客网</p>内嵌式<style> p{原创 2021-09-16 08:38:42 · 264 阅读 · 0 评论 -
[前端必刷75题]14.段落标识
段落标识描述题解html简单实现js实现删除子节点,添加新节点描述请将下面这句话以段落的形式展示在浏览器中——“牛客网是一个专注于程序员的学习和成长的专业平台。”题解html简单实现<p>牛客网是一个专注于程序员的学习和成长的专业平台。</p>js实现let body=document.querySelector("body")body.innerHTML=body.innerText.replace("牛客网是一个专注于程序员的学习和成长的专业平台。","<原创 2021-09-15 11:31:38 · 134 阅读 · 0 评论