继承
Posted on
js继承
1 | /** |
遍历多维数组
Posted on
遍历多维数组
遍历一维数组(Array each方法)
1
2
3
4var arr = [1,2,3,4,5];
arr.forEach(function(item,index,array){
alert(item); //1 2 3 4 5
});自己实现一个Array each方法,能遍历多维数组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33var arr = [1,2,3,[4,[5,[6]]]]
Array.prototype.each = function(fn) {
try{
//1.遍历数组的每一项
this.i || (this.i = 0); //初始化i(减少声明,ES5)
//2.判断什么时候走核心代码
if(this.length>0 && fn.constructor === Function){
//遍历
while(this.i < this.length){ //while循环的范围
//获取数组的每一项
var e = this[this.i];
//如果当前元素获取到了,并且当前元素是一个数组
if(e && e.constructor === Array){
//递归
e.each(fn);
}else{
//如果不是数组,即就是元素
//将数组元素传递给fn
fn.call(e,e);
}
this.i++
}
this.i = null; //释放内存 垃圾回收机制
}
}catch(ex){
//do someting
}
return this;
}
arr.each(function(item){
console.log(item); // 1 2 3 4 5 6
})
去除数组重复元素
Posted on
- 给数组去除重复元素(原生js)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28// 去除数组重复元素
var arr = [1,2,2,3,5,4,8,6,4,2,47,5,9,3,20,3];
//将数组转为对象,将key传入对象,对象中key值不允许重复
var toNewObject = function(arr){
var obj = {};
var len = arr.length;
for(var i = 0;i<len;i++){
obj[arr[i]] = true;
}
return obj;
}
//将对象转成数组
var toNewArr = function(obj){
var arr = [];
for(var attr in obj){
if(obj.hasOwnProperty(attr)){
arr.push(attr);
}
}
return arr;
}
//通过函数输出筛选后的数组
var unique = function(arr){
var obj = toNewObject(arr);
var newArr = toNewArr(obj);
return newArr;
}
console.log(unique(arr));