标签:前端笔试 javascript 提取url参数 trim 正则表达式
这是一个著名互联网公司今天的前端笔试题:多维数组维数不定,如[2,4,1,[2,3,4,[1,2],5,3],3,8]拍扁为[2,4,1,2,3,4,1,2,5,3,3,8]。维数不定,应该要用递归:
function flatten(arr){
var arrLength=arr.length;
for(var i=0;i<arrLength;i++){
if(arr[i].constructor==Array){
arr.splice(i,1,flatten(arr[i]));
}
}
return arr;
}
这也是一个互联网公司的前端笔试题,凭记忆记录,
一个URL如”http://www.taobao.com/index.php?key0=0&key1=1&key2=2…..”提取参数,输出:
{
key0:0,
key1:1,
key2:2,
…
}
function parseQueryString(ustring){
ustring=ustring.slice(ustring.indexOf("?")+1);
var arr=ustring.split("&");
var result=new Object();
for(var i=0;i<arr.length;i++){
var kv=arr[i];
kvarray=kv.split("=");
result[kvarray[0]]=kvarray[1];
}
return result
}
行如“ abc”==》“abc” “abc “==>”abc”
String.prototype.trim=function(){
var result=this.replace(/^\s+|\s+$/g,"");
return result;
}
这题就是考正则表达式的用法,Email地址如234324aabaf_adsf_dad123@qq.vip.com
所以写法应该是/^([a-zA-Z0-9_.-])+\@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})$/
function checkEmailAddress(address){
if(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/.test(address)){
return true
}else{
return false
}
}
invalid=>invalid
#G00==>#G00
var parseColor = function( val ){
var r, g, b;
// 参数为RGB模式时不做进制转换,直接截取字符串即可
if( /rgb/.test(val) ){
var arr = val.match( /\d+/g );
r = parseInt( arr[0] );
g = parseInt( arr[1] );
b = parseInt( arr[2] );
}
// 参数为十六进制时需要做进制转换
else if( /#/.test(val) ){
var len = val.length;
// 非简写模式 #0066cc
if( len === 7 ){
r = parseInt( val.slice(1, 3), 16 );
g = parseInt( val.slice(3, 5), 16 );
b = parseInt( val.slice(5), 16 );
} else if(len==4){
return val;
}
}
else{
return val;
}
return "rgb("+r+","+g+","+b+")";
};
前端笔试题:拍扁多维数组、提取URL中的参数变成对象、实现string的trim()函数、判断Email地址、16进制颜色转rgb格式
标签:前端笔试 javascript 提取url参数 trim 正则表达式
原文地址:http://blog.csdn.net/ldldong/article/details/44786523