前端笔试题笔记:拍扁多维数组、提取URL中的参数变成对象、string的trim()函数、判断Email地址、16进制颜色转rgb

(1)拍扁数组

这是一个著名互联网公司今天的前端笔试题:多维数组维数不定,如[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;
}

(2)提取URL中的参数变成对象

这也是一个互联网公司的前端笔试题,凭记忆记录,
一个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
}

(3)使用js代码,实现去除前后string前后空格的trim()函数

行如“ abc”==》“abc” “abc “==>”abc”

答案:
    String.prototype.trim=function(){
       var result=this.replace(/^\s+|\s+$/g,"");
        return result;
    }

(4)实现一个函数,判断是否是正确的Email地址

这题就是考正则表达式的用法,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
    }

}

(5)16进制颜色转成RGB格式:

要求:#0000ff==》rgb(0,0,255)

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+")";


 }; 

(6)编写一个随机出现任意两个数之间的整数的一个函数

要求:比如随机出现1到10之间的整数

解决办法:值=Math.floor(Math.random()*10+1);

function selectFrom(lowerValue,upperValue){
    var choice=upperValue-lowerValue;
    return Math.floor(Maht.random()*choice+lowerValue);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值