前端经典面试题-代码

1、检测变量类型。

// 此方法不仅可检测出6种基本数据类型,还能检测出Array、Function
Object.prototype.toString.call(Array)
// ['Object','Array']

2、去除字符串中的空格,可使用trim()方法或正则表达式。

// trim()用于去除字符串左右两端的所有空格
// trimLeft()、trimRight()用于去除字符串左边和右边的空格
'   today is Monday   '.trim()  // "today is Monday"
'   today is Monday   '.trimLeft()  // "today is Monday   "
// 使用正则表达式和replace方法可以去除所有空格
// 注意replace方法默认只能替换一次,因此正则表达式需加g修饰符完成全部替换
'   today is Monday   '.replace(/\s*/g,'')  // "todayisMonday"
'   today is Monday   '.replace(/^\s*|\s*$/g,'')  // "today is Monday"

3、获取URL中的参数。

function getUrlParam(sUrl, sKey) {
    var reg = /[?&](\w+)=(\w+)/g // 正则表达式
    var obj = {}
    while(reg.exec(sUrl)) // 每次匹配结果返回一个数组,RegExp.$1表示第一个子表达式的匹配,即key
        obj[RegExp.$1]? obj[RegExp.$1] = [].concat(obj[RegExp.$1],RegExp.$2):obj[RegExp.$1] = RegExp.$2
    return sKey? obj[sKey]||'':obj
}

4、把字符串转换为化成驼峰格式,如-webkit-border-image 转换后的结果为 webkitBorderImage。

// 注意(?!^)的使用,表示不以……开头
// replace方法的第二个参数为函数,函数的a表示完整匹配,b、c表示匹配到的子表达式
function convertToUpper(str){
    return str.replace(/(?!^)-(\w)(\w+)/g, function(a,b,c){
        return b.toUpperCase()+c.toLowerCase()
    }).replace(/-/g,'')
}

5、数组去重,可以使用IndexOf方法或利用对象的key不能重复的特性来做。

// 创建一个新数组,通过判断索引的方法去重,元素不存在时,indexOf返回-1
function arryUniq(arr){
    var uniq = []
    arr.forEach(function(item){
        if(uniq.indexOf(item) < 0){
            uniq.push(item)
        }
    })
    return uniq
}
// 对象的key值不能重复
function arryUniq(arr){
    var obj = {}
    var uniq = []
    arr.forEach(function(item){
        if(!obj[item]){
            obj[item] = true
            uniq.push(item)
        }
    })
    return uniq
}

猜你喜欢

转载自www.cnblogs.com/i-Leo/p/9283043.html