欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js笔试题小试牛刀(2)

程序员文章站 2022-03-12 09:44:02
...

请用es5与es6分别封装一个数组去重的方法

/* es5去重 */
var arr =[5,"5",5,2,"2",1,3];
function unique(arr){
var brr = [];
var obj = {};
for(var i=0;i<arr.length;i++){
	if(!obj[arr[i]]){
		obj[arr[i]]=true;
		brr.push(arr[i]);
	}
}
return brr;
}
console.log(unique(arr));
/* es6去重 */
用new Set()去重,缺点是不同类型的不能去重
var set =new Set(arr);
consol.log(set)

封装一个对象深拷贝的方法

浅拷贝:拷贝的是对象的属性,缺点是一个改变相互影响;
深拷贝:拷贝的是原对象,一个改变互相不影响;

    function copy(oldObj,deep){
        let newObj = {};
        if (oldObj instanceof Array){
            newObj = [];
        }
        for (let key in oldObj){
            let value = oldObj[key];
            if (!!deep && typeof value === "object" && value !== null){ 
                newObj[key] = copy(value,deep);
            } else{           
                newObj[key] = value;
            }
        }
        return newObj;
    }

let obj1 = {a:1,b:{c:2}};
let obj2 = copy(obj1,true);  //深拷贝
let obj3 = copy(obj1,false); //浅拷贝
obj1.b.c = 3;
console.log(obj2);  //{a:1,b:{c:2}}
console.log(obj3);  //{a:1,b:{c:3}}

用正则表达式写一个身份证验证

var reg1 = /^\d{17}[x\d]$/;
var str1 = '421123200009067621';
console.log(reg1.test(str1))     //结果为true