js 操作数组函数-自定义
1.删除数组中指定的元素
/** * 参考实例 foreach = function (obj, insp){ if(obj== null && obj.constructor != Array){ return []; } //obj是要处理的数组,obj==null 表示对象尚未存在;obj.constructor != Array 表示对象obj的属性的构造函数不是数组; //constructor属性始终指向创建当前对象的构造函数。两个条件均满足,则返回空数组[]; //下面对constructor属性作进一步了解。 var obj= [1, 2, 3, 4]; // 等价于 var obj= new Array(1, 2, 3, 4); console.log(obj.constructor === Array); // 返回true 表明obj的构造函数为Array; var foo= function() { }; // 等价于 var foo = new Function(); console.log(foo.constructor === Function); // 返回true 表明foo的构造函数为Function; var obj = new Foo(); //由构造函数实例化一个obj对象 console.log(obj.constructor === Foo); // 返回true 表明obj的构造函数为Foo; */ //删除数组中指定的元素 function del(val, arr) { //检测参数 if (arr == null && arr.constructor != Array) { return []; } var newarr = []; //不存在的保存到新数组中 for (var i = 0; i < arr.length; i++) { if (arr[i] != val) newarr.push(arr[i]); } return newarr; } alert(del(2, [1, 2, 3, 4, 5, 2]));
2.去除重复的元素
/** *去除数组中重复的元素 把元素的值存为一个新数组的key,key是不可以重复的,然后变量次数组即可 */ function unique(data) { data = data || []; var a = {}; len = data.length; for (var i = 0; i < len; i++) { var v = data[i]; if (typeof(a[v]) == 'undefined') { a[v] = 1; } }; data.length = 0; for (var i in a) { data[data.length] = i; } return data; } alert(unique([12,12,12,34]));
3.删除数组指定下标的元素
/** *删除数组的指定下标元素 * * i 的值是一直在变的,n的值是只有if条件成立的时候才会变(会依次递增) */ Array.prototype.remove=function(dx) { if(isNaN(dx)||dx>this.length){return false;} for(var i=0,n=0;i<this.length;i++) { if(this[i]!=this[dx]) { this[n++]=this[i] } } this.length-=1 } var arr = [1,2,3,4,2,5]; alert(arr); arr.remove(2); alert(arr);