数组中的方法详解
一.数组的的创建
var a = new Array();等价于a = [];
二.实例方法
1.pop(): 去除数组的最后一项,会改变原数组。
var a = [1,2,3,4,5]; console.log(a);//[1,2,3,4,5] var b = a.pop(); console.log(a);//[1,2,3,4] console.log(b);//5
2.push():从数组的尾部增加一项,会改变原数组。
var a = [1,2,3,4,5]; console.log(a);//[1,2,3,4,5] var b = a.push(6); console.log(a);//[1,2,3,4,5,6] console.log(b);//6
3.shift(): 从数组的顶部去除一项,会改变原数组
var a = [1,2,3,4,5]; console.log(a);//[1,2,3,4,5] var b = a.shift(); console.log(a);//[2,3,4,5] console.log(b);//1
4.unshift():从数组顶部增加一项,会改变原数组
var a = [1,2,3,4,5]; console.log(a);//[1,2,3,4,5] var b = a.unshift(6); console.log(a);//[6,1,2,3,4,5] console.log(b);//6
5.reverse(): 将数组的位置前后调换,会改变原数组
var a = [1,2,3,4,5]; console.log(a);//[1,2,3,4,5] var b = a.reverse(); console.log(a);//[5, 4, 3, 2, 1] console.log(b);//[5, 4, 3, 2, 1]
6.sort(): 将数组进行排序,参数为正数为升序,参数为负数为降序,会改变原数组
var a = [1,10,2,3,4,5]; console.log(a);//[1, 10, 2, 3, 4, 5] var b = a.sort(); console.log(a);//[1, 10, 2, 3, 4, 5] console.log(b);//[1, 10, 2, 3, 4, 5]
sort会调用每个数组项的toString()转型方法,比较字符串进行排序。
var a = [1,10,2,3,4,5]; console.log(a);//[1, 10, 2, 3, 4, 5] var b = a.sort(compare); console.log(a);//[1, 2, 3, 4, 5, 10] console.log(b);//[1, 2, 3, 4, 5, 10] function compare(value1, value2) { if(value1 > value2) { return 1; }else if (value1 < value2) { return -1; }else { return 0; } }
7.splice(): 可用于数组的删除、插入、替换,会改变原数组。
参数为俩个时:一项是删除的位置(从0开始),另一项是删除的个数
var a = [1,2,3,4,5]; console.log(a);//[1, 2, 3, 4, 5] var b = a.splice(1,2); console.log(a);//[1, 4, 5] console.log(b);//[2, 3]
参数为三个是:一项为删除的起始位置,一项为删除的个数,一项为添加的项
var a = [1,2,3,4,5]; console.log(a);//[1, 2, 3, 4, 5] var b = a.splice(1,2,5); console.log(a);//[1, 5, 4, 5] console.log(b);//[2, 3]
8.join():将数组转化为字符串,join将数组中的逗号替换成空格,也可以替换成其他的。不改变原数组。
var a = [1,2,3,4,5]; console.log(a);//[1, 2, 3, 4, 5] var b = a.join(""); console.log(a);//[1, 2, 3, 4, 5] console.log(b);//12345 console.log(typeof b);//string
9.concat(): 将俩个数组连接,不改变原数组
var a = [1,2,3,4,5]; var b = [6,7,8,9,10]; console.log(a);//[1, 2, 3, 4, 5] console.log(b);//[6, 7, 8, 9, 10] var c = a.concat(b); console.log(a);//[1, 2, 3, 4, 5] console.log(b);//[6, 7, 8, 9, 10] console.log(c);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
10.slice(): 对数组进行浅复制(该特性使其可以将伪数组转化为数组),不会改变原数组。
var a = [1,2,3,4,5]; console.log(a);//[1, 2, 3, 4, 5] var b = a.slice(0, 1); var c = a.slice(1); var d = a.slice(1, 4); var e = a.slice(-2); var f = a.slice(-4, -2); console.log(a);//[1, 2, 3, 4, 5] console.log(b);//[1] console.log(c);//[2, 3, 4, 5] console.log(d);//[2, 3, 4] console.log(e);//[4, 5] console.log(f);//[2, 3]
三.位置方法:
1.indexOf():匹配数组,第一个参数为要匹配的数,第二个参数为起始的位置。找不到返回-1。
var numbers = [1,2,3,4,5,4,3,2,1]; console.log(numbers.indexOf(4));//3 console.log(numbers.indexOf(4, 4));//5
2.lastIndexOf(): 从后面往上找,参数同上,起始位置从正向开始数
var numbers = [1,2,3,4,5,4,3,2,1]; console.log(numbers.lastIndexOf(4));//5 console.log(numbers.lastIndexOf(4, 3));//3 console.log(numbers.lastIndexOf(4, 2));//-1
四.迭代方法
1.every(): 所有均满足条件则返回true否则返回false。
var numbers = [1,2,3,4,5,4,3,2,1]; var everyResult = numbers.every(function(item, index, array) { return (item > 3); }); console.log(everyResult);//false
2.filter():刷选出数组中满足该条件的的数
var numbers = [1,2,3,4,5,4,3,2,1]; var filterResult = numbers.filter(function(item, index, array) { return (item > 3); }); console.log(filterResult);//[4, 5, 4]
3.forEach():对数组中的每一项执行一些操作,没有返回值。
var numbers = [1,2,3,4,5,4,3,2,1]; numbers.forEach(function(item, index, array) { //执行某一些操作 });
4.map(): 对数组中的每一项执行一些操作,返回数组。
var numbers = [1,2,3,4,5,4,3,2,1]; var mapResult = numbers.map(function(item, index, array) { return item + 1; }); console.log(mapResult);//[2, 3, 4, 5, 6, 5, 4, 3, 2]
5.some(): 只要有一项满足条件则返回true否则返回false。
var numbers = [1,2,3,4,5,4,3,2,1]; var someResult = numbers.some(function(item, index, array) { return (item > 3); }); console.log(someResult);//true
五.归并方法:
1.reduce():prev: 前一个值; cur: 当前值; index: 项的索引; array: 数组对象 。将数组中的数相加
var values = [1,2,3,4,5]; var sum = values.reduce(function(prev, cur, index, array) { return prev + cur; });//正向 console.log(sum);//15
2.reduceRight():
var values = [1,2,3,4,5]; var sum = values.reduceRight(function(prev, cur, index, array) { return prev + cur; });//反向 console.log(sum);//15
六.区分数组与对象。
function isArray(value) { return Object.prototype.toString.apply(value) === "[object Array]";//小写的是方法返回的值的格式中默认的,大些的是对象的名字Array } var a = {}; var b = []; console.log(isArray(a));//false console.log(isArray(b));//true
使用自定义一个isArray函数。