
前端编程题
Lavender.
In me the tiger sniffs the rose.
热情 珍惜
展开
-
【js】统计数位上数字不重复的整数的个数
给出一个正整数n,统计0到10^n内,各个数位上的数字均不同的整数个数。(例如:123,个十百位数字都不一样,则计数;121则不计数)输入:2输出90function number(n){ var num=Math.pow(10,n) var cnt=0 for(var i=1;i<num;i++){ var s=''+i var arr=s.sp...原创 2019-09-24 23:39:58 · 693 阅读 · 0 评论 -
【js】使用 apply 调用函数
一、题目描述实现函数 callIt,调用之后满足如下条件1、返回的结果为调用 fn 之后的结果2、fn 的调用参数为 callIt 的第一个参数之后的全部参数示例1输入无输出无arguments并非真正的数组,因此要获得callIt的第一个参数之后的所有参数,不能直接使用slice方法截取,需要先将arguments转换为真正的数组才行。有两种常见的方法...原创 2019-07-25 15:41:32 · 938 阅读 · 0 评论 -
【js】使用 arguments
题目描述函数 useArguments 可以接收 1 个及以上的参数。请实现函数 useArguments,返回所有调用参数相加后的结果。本题的测试参数全部为 Number 类型,不需考虑参数转换。示例1输入1, 2, 3, 4输出10arguments能获得函数对象传入的参数组,类似与一个数组,能够通过length获取参数个数,能通过下标获取该位置的参数,但是...原创 2019-07-25 15:30:07 · 292 阅读 · 0 评论 -
【js】二次封装函数
题目描述已知函数 fn 执行需要 3 个参数。请实现函数 partial,调用之后满足如下条件:1、返回一个函数 result,该函数接受一个参数2、执行 result(str3) ,返回的结果与 fn(str1, str2, str3) 一致示例1输入var sayIt = function(greeting, name, punctuation) { return g...原创 2019-07-25 15:21:15 · 422 阅读 · 0 评论 -
使用闭包
题目描述实现函数 makeClosures,调用之后满足如下条件:1、返回一个函数数组 result,长度与 arr 相同2、运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同示例1输入[1, 2, 3], function (x) {return x * x;}输出41.闭包functio...原创 2019-07-25 15:11:11 · 133 阅读 · 0 评论 -
函数传参
题目描述将数组 arr 中的元素作为调用函数 fn 的参数示例1输入function (greeting, name, punctuation) {return greeting + ', ' + name + (punctuation || '!');}, ['Hello', 'Ellie', '!']输出Hello, Ellie!1.applyfunc...原创 2019-07-25 14:57:34 · 191 阅读 · 0 评论 -
流量控制(js)
题目描述实现 fizzBuzz 函数,参数 num 与返回值的关系如下:1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz2、如果 num 能被 3 整除,返回字符串 fizz3、如果 num 能被 5 整除,返回字符串 buzz4、如果参数为空或者不是 Number 类型,返回 false5、其余情况,返回参数 num示例1输入15...原创 2019-07-25 14:48:44 · 485 阅读 · 0 评论 -
【js】判断是否符合 USD 格式
给定字符串 str,检查其是否符合美元书写格式1、以 $ 开始2、整数部分,从个位起,满 3 个数字用 , 分隔3、如果为小数,则小数部分长度为 24、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3示例1输入'$20,933,209.93'输出truefunction i...原创 2019-07-29 11:27:30 · 768 阅读 · 0 评论 -
【js】判断是否符合指定格式
给定字符串 str,检查其是否符合如下格式1、XXX-XXX-XXXX2、其中 X 为 Number 类型示例1输入'800-555-1212'输出true开头^和结尾$必须加上来限定字符串;3个数可表示为\d{3},4个数则为\d{4},{n}表示前面内容出现的次数。正则表达式可写作/^\d{3}-\d{3}-\d{4}$/,有相同部分\d{3}-,因...原创 2019-07-29 11:24:34 · 2926 阅读 · 0 评论 -
【js】获取指定字符串
题目描述给定字符串 str,检查其是否包含连续3个数字1、如果包含,返回最新出现的 3 个数字的字符串2、如果不包含,返回 false示例1输入'9876543'输出987function captureThreeNumbers(str) { var num=str.match(/\d{3}/); if(num){ ...原创 2019-07-29 11:21:05 · 926 阅读 · 0 评论 -
【js】判断是否以元音字母结尾
字符串 str,检查其是否以元音字母结尾1、元音字母包括 a,e,i,o,u,以及对应的大写2、包含返回 true,否则返回 false示例1输入'gorilla'输出true1.正则确定元音集合[a,e,i,o,u];以元音结尾,加上$;通配大小写,加上i;最后用test方法去检测字符串str。function endsWithVowel(str...原创 2019-07-29 11:16:32 · 1853 阅读 · 0 评论 -
【js】函数柯里化
题目描述已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件:1、返回一个函数 a,a 的 length 属性值为 1(即显式声明 a 接收一个参数)2、调用 a 之后,返回一个函数 b, b 的 length 属性值为 13、调用 b 之后,返回一个函数 c, c 的 length 属性值为 14、调用 c 之后,返回的结果与调用 fn 的返回值一致...原创 2019-07-25 16:12:57 · 195 阅读 · 0 评论 -
【js】且运算、或运算
一、题目描述返回参数 a 和 b 的逻辑且运算结果示例1输入false, true输出false且运算符"&&"的运算规则是:如果第一个运算子的布尔值为true,则返回第二个运算子的值(注意是值,不是布尔值);如果第一个运算子的布尔值为false,则直接返回第一个运算子的值,且不再对第二个运算子求值。function and(a, ...原创 2019-07-25 16:21:43 · 3901 阅读 · 0 评论 -
【js】模块
题目描述完成函数 createModule,调用之后满足如下要求:1、返回一个对象2、对象的 greeting 属性值等于 str1, name 属性值等于 str23、对象存在一个 sayIt 方法,该方法返回的字符串为 greeting属性值 + ', ' + name属性值声明对象有两种常见的方式:var obj = {};和var obj = new Object();...原创 2019-07-25 16:40:13 · 237 阅读 · 0 评论 -
【js】找出json中所有节点的父节点
示例:输入:var nodes = { node: 6, left: { node: 5, left: { node: 4 }, right: { node: 3 } }, right: { node: 2, right: { node: 1 } ...原创 2019-09-23 20:58:19 · 1897 阅读 · 0 评论 -
【js】复数计算
输入:1+2i2+i输出:5ifunction complex(a,b){ var ia=a.indexOf('+') var ib=b.indexOf('+') var a1=parseInt(a.substring(0,ia)) var a2=parseInt(a.substring(ia+1,a.length-1)) var b1=parseInt(b...原创 2019-09-21 18:02:26 · 1497 阅读 · 0 评论 -
【js】计算某个日期是该年的第几天
示例:输入:'2019-09-21'输出:264function getDays(s){ var arr=s.split('-') var d1=new Date(arr[0],0,0).getTime() var d2=new Date(arr[0],arr[1]-1,arr[2]).getTime() var d=Math.floor((d2-d1)/(1...原创 2019-09-21 02:07:21 · 2731 阅读 · 0 评论 -
【js】驼峰命名法和短横线命名法的转换
一、将骆驼命名规则的字符串转换成使用短横线命名法的字符串输入userName输出user-name方法1:采用数组的方法function getKebabCase1(str){ var arr=str.split('') str=arr.map(function(item){ if(item.toUpperCase()===i...原创 2019-09-18 16:14:34 · 3920 阅读 · 0 评论 -
【js】数组的全排列
function permute(arr){ var rst=[],cur=[] function fn(arr){ var ch for(var i=0;i<arr.length;i++){ ch=arr.splice(i,1)[0] cur.push(ch) if(arr.length==0){ rst.push(cur.slice()) }...原创 2019-09-09 22:26:00 · 838 阅读 · 1 评论 -
【js】按json的某一个字段排序
对data的time字段,按照由小到大排序;如果为空,则按原来的顺序放在后面。var data=[{name:'xixi',time:'2019-09-03'},{name:'haha',time:'2019-09-02'},{name:'hehe',time:'2019-09-01'},{name:'hihi',time:'2019-09-04'},{name:'mumu...原创 2019-09-09 21:50:37 · 903 阅读 · 0 评论 -
【js】比较两个APP的版本号
输入:5.2.0和5.1输出:按版本由小到大输出5.1,5.2.0var v1='5.2.0'var v2='5.1'var arr1=v1.split('.').map(function(item){ return parseInt(item)});var arr2=v2.split('.').map(function(item){ return pa...原创 2019-09-09 18:29:31 · 5903 阅读 · 0 评论 -
【js】字符串的所有字串
输入一个字符串,输出字符串的所有字串。示例:输入'abc'输出'a', 'ab', 'abc', 'b', 'bc', 'c'let s='abc'let a=[]for(let i=0;i<s.length;i++){ for(let j=i+1;j<=s.length;j++){ a.push(s.substring(i,j))...原创 2019-08-31 19:50:57 · 519 阅读 · 0 评论 -
【js】二进制转换-移位运算符
题目描述获取数字 num 二进制形式第 bit 位的值。注意:1、bit 从 1 开始2、返回 0 或 13、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1示例1输入128, 8输出11.移位运算符>>和&function valueAtBit(num, bit) { return (num >...原创 2019-07-25 16:51:27 · 903 阅读 · 0 评论 -
【js】检查重复字符串
题目描述给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false示例1输入'rattler'输出true在正则表达式中,利用()进行分组,使用斜杠加数字表示引用,\1就是引用第一个分组,\2就是引用第二个分组。将[a-zA-Z]做为一个分组,然后引用,就可以判断是否有连续重复的字母。function c...原创 2019-07-29 11:10:59 · 1581 阅读 · 0 评论 -
【js】判断是否包含数字
题目描述给定字符串 str,检查其是否包含数字,包含返回 true,否则返回 false示例1输入'abc123'输出true1.正则,testfunction containsNumber(str) { var reg=/\d/; return reg.test(str);}2.正则,matchfunction contain...原创 2019-07-28 23:13:59 · 9067 阅读 · 0 评论 -
【js】属性遍历
题目描述找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)1、返回数组,格式为 key: value2、结果数组不要求顺序示例1输入var C = function() {this.foo = 'bar'; this.baz = 'bim';};C.prototype.bop = 'bip';iterate(new C());输...原创 2019-07-28 23:10:12 · 155 阅读 · 0 评论 -
斐波那契数列
题目描述用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等1.递归function fibonacci(n) { if(n==1 || n==2) return 1; else{ return fibonacci(n-1)+fibonacci(n-2);} }...原创 2019-06-29 16:03:45 · 302 阅读 · 0 评论 -
数组去重
题目描述为 Array 对象添加一个去除重复项的方法输入[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN]输出[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']1.Array.prototype.uniq = functio...原创 2019-06-29 15:43:16 · 171 阅读 · 0 评论 -
DOM节点查找
题目描述查找两个节点的最近的一个共同父节点,可以包括节点自身输入描述:oNode1 和 oNode2 在同一文档中,且不会为相同的节点function commonParentNode(oNode1, oNode2) { for(;oNode1;oNode1=oNode1.parentNode){ if(oNode1.contains(oNode2))...原创 2019-06-29 15:34:14 · 657 阅读 · 0 评论 -
获取 url 参数
题目描述获取 url 中的参数1. 指定参数名称,返回该参数的值 或者 空字符串2. 不指定参数名称,返回全部的参数对象 或者 {}3. 如果存在多个同名参数,则返回数组示例1输入http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe输出[1, 2, 3]function ...原创 2019-06-29 15:13:10 · 218 阅读 · 0 评论 -
修改 this 指向
题目描述封装函数 f,使 f 的 this 指向指定的对象function bindThis(f, oTarget) { if(f.bind){ return f.bind(oTarget); } else { return function(){ return f.apply(oTarget,arguments);...原创 2019-06-29 15:02:34 · 189 阅读 · 0 评论 -
添加元素
题目描述在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4], 10输出[10, 1, 2, 3, 4]1.unshiftfunction prepend(arr, item) { var newarr=arr.slice(0); newarr.unshift(item); ...原创 2019-07-09 21:36:29 · 460 阅读 · 0 评论 -
删除数组最后一个元素
题目描述删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4]输出[1, 2, 3]1.利用数组的lengthfunction truncate(arr) { var newarr=arr.slice(0); newarr.length=newarr.length-1; retu...原创 2019-07-09 21:32:19 · 18295 阅读 · 1 评论 -
添加元素
题目描述在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4], 10输出[1, 2, 3, 4, 10]1.slice浅拷贝+pushfunction append(arr, item) { var newarr=arr.slice(0); newarr.push(item);...原创 2019-07-09 21:25:48 · 210 阅读 · 0 评论 -
移除数组中的元素,要求不改变原数组
题目描述移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4, 2], 2输出[1, 3, 4]1.先说一个错误的,case通过率是66.67%,原因在于改变了原数组。function remove(arr, item) { var arr1=arr; //只是把地址给了...原创 2019-07-09 21:19:51 · 4284 阅读 · 0 评论 -
数组求和
题目描述计算给定数组 arr 中所有元素的总和输入描述:数组中的元素均为 Number 类型示例1输入[ 1, 2, 3, 4 ]输出101.最普通的累加function sum(arr) { var sum=0,l=arr.length; for(var i=0;i<l;i++){ sum+=arr[i];...原创 2019-07-09 21:09:59 · 8723 阅读 · 0 评论 -
删除数组第一个元素
题目描述删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4]输出[2, 3, 4]1.shiftfunction curtail(arr) { var newarr=arr.slice(0); //或者var newArr = arr.join().split(','); ...原创 2019-07-10 17:44:25 · 7967 阅读 · 0 评论 -
数组合并
题目描述合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4], ['a', 'b', 'c', 1]输出[1, 2, 3, 4, 'a', 'b', 'c', 1]1.concatfunction concat(arr1, arr2) { return arr1.concat(arr2)...原创 2019-07-10 17:50:53 · 8087 阅读 · 0 评论 -
添加元素
题目描述在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4], 'z', 2输出[1, 2, 'z', 3, 4]1.splicefunction insert(arr, item, index) { var newarr=arr.slice(0); newarr...原创 2019-07-10 17:56:07 · 159 阅读 · 0 评论 -
【js】批量改变对象的属性
题目描述给定一个构造函数 constructor,请完成 alterObjects 方法,将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量。示例1输入var C = function(name) {this.name = name; return this;};var obj1 = new C('Rebecca');alt...原创 2019-07-28 23:04:23 · 3179 阅读 · 0 评论