var a ={ "name":"array", "length":10 }; var b = ["1","2","3","4"]; //判断是否为数组 // console.log( a instanceof Object ); // console.log( a instanceof Array ); // console.log( b instanceof Array ); // console.log( b instanceof Object ); // console.log(Array.isArray(b)); // console.log(b.constructor===Array) // console.log(Object.prototype.toString.call(b) === "[object Array]"); // if(b.constructor.pop !== undefined){ // console.log("是一个数组"); // } //数组去重 var c =[3,3,4,5,6,8,9,9,8,4,5,5,1,2]; Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len=arr.length; //for循环是先执行外层循环,再执行内层循环,执行内循环时,是知足内层条件就一直执行,直到条件不知足,才在执行外循环 for(i=0;i<len;i++){ //此处下标 i 的值为0,执行里面的循环,就是用下标为0 的元素,与其余全部的元素相比较, for(j=i+1;j<len;j++){ //此处当前一个值与后一个值相等时,他们的下标都加一。解释这里,就是说此处小标i的值在后面有相等的,就过滤掉了下标i的值,继续i加一的循环。 if(arr[i]===arr[j]){ j = ++i; } console.log(1111) } result.push(arr[i]); console.log(22222) } return result; } console.log(c.distinct()); Array.prototype.cuchong = function(){ var ar= this, len = ar.length; ar.sort(function(a,b){ return a-b; }) //首先传入的值是数组的长度,递归,发现后一个值与前一个值相等时,删除掉后一个值。再递归 function loop(index){ if(index>=1){ if(ar[index] === ar[index-1]){ ar.splice(index,1) } loop(index-1); } } loop(len-1); return ar }; var d =c.cuchong(); console.log(c.cuchong())