数组去重

来源:互联网 发布:unity3d settexture 编辑:程序博客网 时间:2024/06/07 10:32

es6:

var arr = [1,2,2,3]var uniqueArr=[...new Set(arr)]//1,2,3
function unique1(array){     var n = []; //一个新的临时数组     //遍历当前数组     for(var i = 0; i < array.length; i++){     //如果当前数组的第i已经保存进了临时数组,那么跳过,     //否则把当前项push到临时数组里面         if (n.indexOf(array[i]) == -1) n.push(array[i]);     }     return n; }

循环遍历嵌套数组

function getArray(arr){    var arrs=[];    for(var i=0;i<arr.length;i++){        if(!Array.isArray(arr[i])){            arrs.push(arr[i])        }else{            arrs=arrs.concat(getArray(arr[i]))        }    }    return arrs}//法二var arr=[1,[2,[5,6],{value:'ddd'}],4],result=[]function getArray(arr,result){    var temp;    for(var i=0;i<arr.length;i++){        temp=arr[i]        if(Array.isArray(temp)){            getArray(temp,result)        }else{            result.push(temp)        }    }}getArray(arr,result)

对象克隆

function clone(Obj) {var buf;   if (Obj instanceof Array) {    buf=Array.prototype.slice.call(Obj)    return buf;} else if (Obj instanceof Object){    buf = {};  // 创建一个空对象    for (var k in Obj) {  // 为这个对象添加新的属性        buf[k] = clone(Obj[k]);    }    return buf;}else{    return Obj;}}

深度克隆

function deepClone(obj){    var _toString=Object.prototype.toString;    if(!obj||typeof obj!=='object'){        return obj;//空数组,null,undefined,function    }    if(obj.nodeType&&'clone' in obj){        return obj.cloneNode(true)    }    if(_toString.call(obj)==='[object Date]'){        return new Date(obj.getTime())    }    if(_toString.call(obj)==='[object RegExp]'){        var flags=[];        if(obj.global){flags.push('g')}        if(obj.multiline){flags.push('m')}        if(obj.ignoreCase){flags.push('i')}        return new RegExp(obj.source,flags.join(''))    }    var result=Array.isArray(obj)?[]:obj.constructor?new obj.constructor():{}//new Boolean()    for(var key in obj){        result[key]=deepClone(obj[key]);    }    return result;}

求数组最大数

Math.max.apply(null,arr)
Array.prototype.reduce=function(callback,initialValue){    var previous,k    if(initialValue){        previous=initialValue;        k=0    }else{        previous=this[0];        k=1    }    if(typeof callback=='function'){        for(k;k<this.length;k++){             this.hasOwnProperty(k) && previous=callback(previous,this[k],k,this)        }    }    return previous}
0 0