深度克隆数组
function clone(Obj) { var buf; if (Obj instanceof Array) { var buf = [];//建立一个空数组 var i = Obj.length; while (i--) { buf[i] = clone(Obj[i]); } return buf; } else if (Obj instanceof Object) { buf = {};//建立一个空对象 for (var k in Obj) { buf[k] = clone(Obj[k]); } return buf; } else { return Obj; } }
数组去重-方法一app
Array.prototype.unique1 = function () { var tempArr = [];// 一个新的临时数组 for (var i = 0; i < this.length; i++) {//遍历当前数组 //若是当前数组的第i已经保存进了临时数组,那么跳过, //不然把当前项push到临时数组里面 if (n.indexOf(this[i]) == -1) { n.push(this[i]); } return tempArr; } };
数组去重-方法二this
Array.prototype.unique2 = function () { var result = {}, tempArr = [];//result为hash表,tempArr为临时数组 for (var i = 0; i < this.length; i++) {//遍历当前数组 if (!hash[this[i]]) {//若是hash表中没有当前项 hash[this[i]] = true;//存入hash表 tempArr.push(this[i]);//把当前数组的当前项push到临时数组里面 } } return tempArr; };
数组去重-方法三prototype
Array.prototype.unique3 = function () { var result = [this[0]];//结果数组 for (var i = 1; i < this.length; i++) {//从第二项开始遍历 //若是当前数组的第i项在当前数组中第一次出现的位置不是i, //那么表示第i项是重复的,忽略掉。不然存入结果数组 if (this.indexOf(this[i]) == i) { result.push(this[i]); } } return result; };
一、给Array本地对象增长一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含【被删除的重复条目的新数组】code
Array.prototype.unique = function () { var result = []; for (var i = 0; i < this.length; i++) { for (var j = i + 1; j < this.length; j++) { if (this[i] === this[j]) { result.push(this.splice(j, 1)[0]); } else { j++; } } } return result; }; console.log(['a', 'b', 'c', 'd', 'b', 'a', 'e', 'asd', 'as', 12, 56, 1, 12, 'as'].unique());
var a = [1,4,5,2,9]; 下面求a中最大值正确的是对象
var a = [1, 4, 5, 2, 9]; console.log(Math.max.apply(null, a));
为 Array 对象添加一个去除重复项的方法,获得【去重后的数组】原型
Array.prototype.uniq = function () { var arr = []; var flag = true; for (var i = 0; i < this.length; i++) { if (arr.indexOf(this[i]) == -1) { if (this[i] != this[i]) { if (flag) { arr.push(this[i]); flag = false; } } else { arr.push(this[i]) } } } return arr; }; console.log([false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN].uniq());