JavaScript-08

数组的方法

数组排序

  • 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: 可选传递给函数的初始值

例如:

数组求和
数组求和
二维数组合并为一维数组
在这里插入图片描述
数组去重
在这里插入图片描述
求数组中的最大值
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值