首页 > 代码库 > 编程题总结(二)
编程题总结(二)
1、一个数组 par 中存放有多个人员的信息,每个人员的信息由年龄 age 和姓名 name 组成,如{age: 2, name: ‘xx‘}。请写一段 JS 程序,对这个数组按年龄从小到大进行排序。
function sortAge(arr){ return arr.sort(function(arr1,arr2){ return arr1.age-arr2.age; }) }
return a-b:倒序
return b-a:升序
2、有字符串 var = ‘abc345efgabcab‘,请写出 3 条 JS 语句分别实现如下 3 个功能:
1)去掉字符串中的a、b、c 字符,形成结果:‘345efg‘ str.replace(/[abc]/g,‘‘)
2)将字符串中的数字用中括号括起来,形成结果:‘abc3[5]efgabcab‘ str.replace(/(\d)+/g, ‘[$1]‘);
3)将字符串中的每个数字的值分别乘以 2,形成结果:‘abc6810efgabcab‘ str.replace(/(\d)/g, function(num) {return num*2;});
3、请写出下面 JS 程序中几个 alert 的结果:
var a = 100; function fn() { alert(a); var a = 200; alert(a); } fn(); undefined 200 alert(a);100 var a; alert(a);100 var a = 300; alert(a);300
4、请问以前 JS 程序有什么问题?应该如何优化?
function setStyle(element) { element.style.fontWeight = "bold"; element.style.textDecoration = "none"; element.style.color = "#000000"; }
优化后:
function setStyle(element) { if (!element.style) { return; } var eleStyle = element.style; eleStyle.fontWeight = "bold"; eleStyle.textDecoration = "none"; eleStyle.color = "#000000"; }
5、请写出一下正则表达式:
1)匹配一个全部是数字的字符串
var pat=/^\d+$/; //开头到结尾都是数字的字符 var str=‘2345‘; str.match(pat) //["2345"]
2)提取一个 url 所使用的协议类型如 http、ftp 和 host 名称
var str = ‘http://yangbai.me‘; var pat=/(\w+):\/\/([\w.]+)/; var result=str.match(pat); //["http://yangbai.me", "http", "yangbai.me"] var http=result[1]; var host=result[2];
6、请使用闭包的方式,写一段 JS 程序实现如下功能:函数每调用一次则该函数的返回值加 1。
function fn(){ var n=0; function fn1(){ n++; console.log(n); } return fn1; } var foo=fn(); foo(); //1 foo(); //2 foo(); //3
7、有这样一个 URL:http://vip.qq.com/a.php?a=1&b=2&c=&d=xxx&e,请写一段 JS 程序提取 URL 中的各个参数(参数名和参数个数不确定),将其按 key-value 形式返回到一个 json 结构中,如{a:‘1‘,b:‘2‘,c:‘‘,d:‘xxx‘,e:undefined}。
function UrltoJson(url){ var arr=url.split(‘?‘)[1].split(‘&‘); var result={}; arr.forEach(function(e){ var aEle=e.split(‘=‘); result[aEle[0]]= aEle[1]? aEle[1]:undefined; //判断是否存在 }) return result; }
编程题总结(二)