以前,在初识数组的时候,就是在懵懵懂懂中度过学习期。很久没有接触这块内容,已经差不多忘记了,这几天看关于数组的知识点,来进行梳理一下。
数组有这些方法:
- isArray()------>>>检测数组(IE9+、FireFox 4+、Safari 5+、Opera 10.5+ 和Chrome)
- if (Array.isArray(value)) {//对数组执行某些操作}
- toString()、toLocaleString()、valueOf()和join()------>>>转换方法
举例子:var array = [1, 2, 4, 3, 5];
- toString()返回由数组中每一个值的字符串形式拼接而成的一个以逗号隔开的字符串。console.log(array.toString());-------->>1,2,3,4,5
- toLocaleString()返回由数组中每一个值的字符串形式拼接而成的一个以逗号隔开的字符串。console.log(array.toLocaleString());-------->>1,2,3,4,5
- valueOf()返回的还是数组。console.log(array.valueOf());-------->>[1, 2, 4, 3, 5]
- join()可以用不同的分隔符来构建字符串。它只有一个参数,即用作分隔符的字符串,返回包含所有数组项的字符串。console.log(array.join());-------->>1,2,3,4,5
console.log(array.join("||"));-------->>1||2||4||3||5 如果不传值,或者传入undefined,则以逗号作为分隔符(IE7以及更早的版本会错误的使用字符串“undefined”作为分隔符)。
- push()、pop()------>>>栈方法
举例子:var color = new Array();
- push()可以接收任意数量的参数,把他们逐个加到数组的末尾,并且返回修改后数组的长度。var count = color.push("red","green");console.log(count);-------->>2
- pop()则从数组的末尾移除最后一项,减少length值,然后返回移除的项。var item = color.pop();console.log(item);-------->>green
console.log(color.length);-------->>1
- reverse()、sort()------>>>重排序方法
举例子:var array = [1, 2, 4, 3, 5];
- reverse()反转数组的顺序;array.reverse();console.log(array)-------->>[1, 2, 4, 3, 5]
- sort()排序。
在默认的情况下,以升序排序:小的在前面,大的在后面。默认的是把数组每一个值转换成字符串,然后进行排序。
在很多情况下,这种排序方式都不是最佳的方案。所以可以接收一个比较函数。function compare(num1, num2) {if (num1 < num2) {return 1;} else if (num1 > num2) {return -1;} else {return 0;}}var array = [1, 2, 4, 3, 5];var result = array.sort(compare);console.log(result);-------->>[5, 4, 3, 2, 1]排在前面的值返回-1;排在后面的返回1,相等的返回0;数值类型的,减法操作可以处理这些情况。
- shift()、unshift()------>>>队列方法
举例子:var color = new Array();
- unshift()可以接收任意数量的参数,把他们逐个加到数组的末尾,并且返回修改后数组的长度。var count = color.unshift("red","green");console.log(count);-------->>2
- shift()移除数组中的第一个项并且返回移除的项,减少length值。var item = color.shift();console.log(item);-------->>red
console.log(color.length);-------->>1
- concat()、slice()、splice()------>>>操作方法
- concat()没有给值时,它只是复制当前数组并且返回副本。若有参数,则将值加到数组的末尾。原来的数组保持不变
- slice()基于当前数组中的一个或者多个项创建新数组。可以有一个或两个参数,即要返回的起始位置和结束位置。原来的数组保持不变
一个参数:返回值为该参数指定位置到数组的末尾所有项。
两个参数:起始位置和结束位置但是不包括结束位置的项。 - splice()主要用途是向数组的中部插入项。它始终会返回一个数组,该数组包含从原始数组中删除的项(如果没有任何项,则返回空数组)。会改变原来的数组
删除:可以删除任意数量的项,只需要指定2个参数:删除第一项的位置和删除的个数;插入:可以向指定位置插入任意数量的项,只需要提供3个参数:起始位置、0(要删除的数量)、插入的项。若要插入多个项,则可以传入第四五六个项;替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需要指定3个参数:起始位置、要删除的项、插入的任意数量的项。
- indexOf()、lastIndexOf()------>>>位置方法(支持的浏览器有:IE9+、FireFox 2+、Safari 3+、Opera 9.5+ 和Chrome)
都接收两个参数:要查找的项和查找起点位置的索引(可选的)。这两个方法都返回要查找的项在数组中的位置,若没有,则返回-1。比较时,使用的是全等操作符。
- indexOf()从数组的开头位置向后找。
- lastIndexOf()从数组的末尾开始向前找。
- every()、filter()、foreach()、map()、some()------>>>迭代方法 (支持的浏览器有:IE9+、FireFox 2+、Safari 3+、Opera 9.5+ 和Chrome)这些方法不会改变数组的值。
对数组中的每一项运行给定函数。
- every()如果该函数对每一项都返回true,则返回true
- filter()返回该函数会返回true的项组成的数组
- foreach()这个方法没有返回值
- map()返回每次函数调用的结果组成的数组
- some()如果该函数对任意一项返回true,则返回true
- reduce()、ReduceRight()------>>>归并方法(支持的浏览器有:IE9+、FireFox 3+、Safari 4+、Opera 10.5 和Chrome)
都接收两个参数:一个在每一项上调用的函数和作为归并基础的初始值(可选的)。传给它两的函数接收四个参数:前一个值,当前值,索引和数组对象。
这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项,因此第一个参数是数组的第一项,第二个参数是数组的第二项。
- reduce()从数组的第一项开始,逐个遍历到最后
- ReduceRight()从数组的最后一项开始,向前遍历到第一项。
知识点基本在这里,具体怎么用,还是得具体问题具体分析呀!!!