1、实现深度克隆
function deepClone(obj ,c){
let x= c || {};
for(k in obj){
if(typeof obj[k] === "Object"){
x[k] = (obj[k].constructor ===Array)?[]:{};
return deepClone(obj[k],x[k]);
}else{
x[k] = obj[k]
}
}
return x;
}
//obj 被克隆的对象
2、随机打乱一个数组
function randoms(arr,newArr,iArr){
if(newArr.length<arr.length){
let emp = Math.floor(Math.random()*(arr.length));
if(iArr.indexOf(emp)<0){
iArr.push(emp);
newArr.push(arr[emp]);
return randoms(arr,newArr,iArr);
}else{
return randoms(arr,newArr,iArr);
}
}else{
return newArr;
}
}
//arr 要打乱的数组 ,返回新的数组newArr ,iArr初始化为空
3、一个未知长度的二维数组,从数组元素里面取一个元素,和其他子数组里面的元素从新组合生成一个新的二位数组
Arr=[]
obj = new Array;
arrs=obj.concat(list); //使arrs指向新的地址
for(var i=0;i<(list.length-1);i++){
arrs.splice(0,1);
arrs.forEach(v=>{
v.forEach((k,n)=>{
Arr.push([list[i][0],k]);
Arr.push([list[i][1],k]);
})
})
}
//list 原始的二位数组
4、获取一个页面所用到的标签
function getTags(tags){
let arrs=[];
for(var i=0;i<tags.length;i++){
if(arrs.indexOf(tags.item(i).tagName)<0){
arrs.push(tags.item(i).tagName);//HTMLCollection.item()根据索引返回节点
}
}
return arrs;
};
tags = document.getElementsByTagName('*');
getTags(tags );
5、实现calc(arg1,arg2,arg3)
calc(0)=>[];
clac(10)=>[0,1,2,3,4,5,6,7,8,9]
calc(1,10)=>[1,2,3,4,5,6,7,8,9]
calc(0,30,5)=>[0,5,10,15,20,25]
//--------------------
function calc(num_1,num_2,num_3){
var arr=[];
if(!!num_3){
for(var i=num_1;i<num_2;i++){
if(i%num_3==0){
arr.push(i);
}
}
}else{
if(!num_2){
for(var i=0;i<num_1;i++){
arr.push(i);
}
}else{
for(var i=num_1;i<num_2;i++){
arr.push(i);
}
}
}
return arr;
}