从《高程》中整理出来的数组的概念和数组对象的一些方法,分享给大家同时也是复习复习,有不正确的地方欢迎指正,共同进步。
一.认识引用类型
js中的数据类型分为基本类型(string
,boolean
,undefined
,null
,number
)和引用类型。引用类型的值(对象)是引用类型的一个实例,在ECMA
中,引用类型是一种数据结构,它相当于其他语言中的类。而对象则是某个特定类型的实例。
二.认识数组
Array
是引用类型中的一种,也是js中很常用面试题也经常出现的类型。
创建数组的方式有两种:
1.使用用Array构造函数:
1
| var arr = new Array('1','2','3');
|
2.使用字面量:
1
| var arr = ['1','2','3'];
|
如何检测检测数:
1 2 3 4
| var arr = ['1','2','3']; if(arr instanceof Array){ };
|
三.数组方法
1.转换方法:
1 2 3 4
| var a=['1','2','3']; a.toString(); a.valueOf(); a.toLocaleString();
|
2.栈和队列方法
1 2 3 4 5
| var a=['1','2','3','4']; a.push('5'); a.pop(); a.shift(); a.unshift('0');
|
3.重排序方法
1 2 3 4 5 6
| var a=[3,1,9,18]; a.reverse(); a.sort(); a.sort( function(value1,value2){ return value1-value2 } );
|
4.操作方法
1 2 3 4 5 6 7 8
| var a=['0','1','2','3']; a.concat(['4',5]); a.concat('4','5'); a.slice(1,2); a.slice(2); a.splice(1,2); a.splice(2,0,'1.1','1.2'); a.splice(1,1,'1.1','1.2');
|
5.位置方法
1 2 3 4 5
| var a=['0','1','2','3','2','1','0']; a.indexOf('2'); a.lastIndexOf('2'); a.index0f('5'); a.indexOf('2',3);
|
这两个方法的兼容性:IE9+
6.迭代方法
ECMAScript5
为数组定义了5个迭代方法,接收两个参数:要在每一项运行的函数和上下文(第二个参数可省略);
传入的函数接收三个参数(数组项的值,该项在数组中的位置,和数组对象本身)。这5个想法分别是:
every()
//对数组中的每一项运行传入的函数,如果每一项都返回true,则返回true
filter()
//对数组中的每一项运行传入的函数,返回一个由会返回true的项组成的数组
forEach()
//对数组中的每一项运行传入的函数。没有返回值。作用相当于for
map()
//对数组中的每一项运行传入的函数,返回一个由每项调用传入函数的结果组成的数组
some()
//对数组中的每一项运行传入的函数,如果该函数对某一项返回true,则返回true
这些方法的介绍都不太好理解,以下是一些例子:
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
| var a=[1,2,3,4,3,2,1]; a.every(function(item,index,arr){ return (item>2) }); a.every(function(item,index,arr){ return (item>0) }); a.some(function(item,index,arr){ return (item>2) }); a.filter(function(item,index,arr){ return (item>2) }); a.map(function(item,index,arr){ return (item>2) }); a.map(function(item,index,arr){ return (item*2) }); var b=[]; a.forEach(function(item,index,arr){ b[index]=item*2 }); console.log(b);
|
这些方法的兼容性IE9+
7.归并方法
两个归并方法:reduce()
和reduceRight()
;这两个方法接收一个用于迭代的函数(reduce()
从头部开始迭代,reduceRight()
从尾部开始)。
这个函数接收四个参数:当前项的前一项,当前迭代到的项,当前项的位置,数组对象。
1 2 3 4 5 6 7 8 9 10 11 12
| var a=[1,2,3,4,5]; a.reduce(function(pre,cur,index,arr){ return pre+cur; }); var a=["1","2","3","4","5"]; a.reduceRight(function(pre,cur,index,arr){ return pre+cur; }); a.reduce(function(pre,cur,index,arr){ return pre+cur; });
|
这些方法的兼容性IE9+
小结
数组往往考察算法和对一门语言理解的重要切入点。在用的过程最好也能想想这些方法的实现,或者通过Array.prototype
重写一次改方法的实现。这对我们很有帮助。
欢迎大家转载,请注明出处:
Doterlin's Blog https://doterlin.github.io/blog/2016/07/01/array/