数组的方法
数组排序
- reverse()
颠倒数组中元素的顺序,并返回数组 - sort()
数组的元素进行排序,并返回数组
对字符串排序,从左至右逐字比较(ASCII码顺序)
如[“ab”, “ac”, “abc”], 排序后为[“ab”, “abc”, “ac”]。
(第一位相同比较第二位,b>c,因此ab和abc在ac之前;再比较ab与abc, ab没有第三位,因此排在abc之前)
数字排序
如需要对字符串形式的数字进行排序,采用以下两种方式
- 统一格式,补足位数,如[“10”, “5”, “18” , “50”]中, 将“5”写为“05”
- 转换为数字,使用特殊方法对数字排序
function sortby(a, b) {
return a - b //升序
//return b - a //降序
}
var arr = [10,5,8,50];
arr.sort(sortby) //[5,8,10,50]
该比较函数的名字可为任意,也可直接在sort()内写匿名函数作为参数
多维数组排序
需要对多维数组中的值进行排序时,可借助比较函数sortby
根据比较函数的返回值为正或为负决定排列顺序
- 返回值为正就对比下一组
- 返回值为负,则交换位置
数组转字符串
- toString()
把数组转换为数组值(逗号分隔)的字符串
var fruits = ["Banana", "Orange", "Apple"];
var str = fruits.toString() //str的值是“Banana,Orange,Apple”, 原数组fruits不变
- join()
把数组转换为数组值(指定分隔符分隔)的字符串
当join()没有传入参数时,使用默认分隔符 逗号
var fruits = ["Banana", "Orange", "Apple"];
var str = fruits.join("|") //str的值是“Banana|Orange|Apple”, 原数组fruits不变
合并数组
concat()
合并现有数组来创建一个新数组
var arr1 = ["Banana", "Orange"];
var arr2 = ["Apple", "Mango"];
var newArr = arr1.concat(arr2)
//newArr为["Banana", "Orange", "Apple", "Mango"] 原数组arr1,arr2不变
可以传入多个数组作为参数
当concat()没有传入参数时,仅拷贝原数组的值
查找索引
indexOf()
返回要查找的项在数组中首次出现的位置
var fruits = ["Banana", "Orange", "Apple"];
var index = fruits.indexOf("Apple") //index的值是2
在没找到的情况下返回-1
var fruits = ["Banana", "Orange", "Apple"];
var index = fruits.indexOf("Mango") //index的值是-1
多个相同元素的情况只返回首个元素出现的位置
var fruits = ["Banana", "Orange", "Apple", "Orange"];
var index = fruits.indexOf("Orange") //index的值是1
数组截取
slice()
用数组的某个片段切出新数组
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var newArr = fruits.slice(1) //newArr的值是[“Orange”, “Apple”, “Mango”]; fruits的值不变
当slice()参数为一个时,表示从该参数位置开始,直到数组结束部分的所有元素
如arr.slice(3)会截取从arr[3]开始(包含arr[3])往后的所有元素组成一个新数组
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var newArr = fruits.slice(1,3) //newArr的值是[“Orange”, “Apple”]; fruits的值不变
当slice()参数为两个时,表示从第一个参数位置开始,到第二个参数位置(不包含)之间元素
如arr.slice(3,6)会截取从arr[3]开始(包含arr[3])到arr[6](不包含arr[6])即arr[3],arr[4],arr[5]
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var newArr = fruits.slice(-2) //newArr的值是[“Apple”, “Mango”];
当参数为负数时表示从结尾开始截取几个元素,如arr.slice(-10)表示截取arr的最后十个元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var newArr = fruits.slice(-3,-1) //newArr的值是[“Orange”, “Apple”];
当slice()参数为两个负数时,表示倒数的元素区间
如arr.slice(-10,-2)表示从倒数第十个元素(包含)到倒数第二个元素(不包含)
数组更新
splice()
向/从数组中添加/删除项目,然后返回被删除的项目,该方法会修改原数组
arr.splice(index, howmany, item1,.....,itemX)
index: 必选 规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var items = fruits.splice(2) //fruits的值是[“Banana”, “Orange”]; items的值是[“Apple”, “Mango”]
howmany: 可选 要删除的项目数量。如果不填,则删除剩余所有项目; 如果设置为 0,则不会删除项目。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var items = fruits.splice(2,1) //fruits的值是[“Banana”, “Orange”, “Mango”]; items的值是[“Apple”]
item1, …, itemX:可选 向数组添加的新项目。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var items = fruits.splice(2,0,"Pear") //fruits的值是[“Banana”, “Orange”, “Pear”, “Apple”, “Mango”];
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var items = fruits.splice(2,1,"Pear") //fruits的值是[“Banana”, “Orange”, “Pear”, “Mango”];
数组归并
reduce()
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
arr.reduce(function(acc,cur,index,arr){}, initialValue)
- acc: 必选 accumulator 累加器,计算结束后的返回值
- cur: 必选 currentValue 当前元素
- index: 可选 currentIndex 当前元素的索引
- arr: 可选 currentArray 当前元素所属的数组
- initialValue: 可选传递给函数的初始值
例如:
数组求和
二维数组合并为一维数组
数组去重
求数组中的最大值