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
上一篇: 查看所有用户的crontab
下一篇: Swagger2 WebFlux小试牛刀