JavaScript对象编程(四)

JavaScript对象编程(四)

数组的方法(二)

数组转字符串

toString()
把数组转换成数组值(逗号分隔)的字符串

var fruits = ["Banana", "Orange", "Apple"];
var str = fruits.toString() //str的值是“Banana,Orange,Apple”, 原数组fruits不变

join()
把数组转换为数组值(指定分隔符分隔)的字符串

var fruits = ["Banana", "Orange", "Apple"];
var str = fruits.join("|") //str的值是“Banana|Orange|Apple”, 原数组fruits不变

当join()没有传入参数时,使用默认分隔符 逗号

合并数组

concat()
合并现有数组来创建一个新数组

var arr1 = ["Banana", "Orange"];
var arr2 = ["Apple", "Mango"];
var newArr = arr1.concat(arr2) 
//newArr为["Banana", "Orange", "Apple", "Mango"] 原数组arr1,arr2不变

var arr1 = ["Banana", "Orange"];
var newArr = arr1.concat("Apple", "Mango") 
//newArr为[“Banana”, “Orange”, “Apple”, “Mango”] 原数组arr1不变

可以传入多个数组作为参数
当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)表示从倒数第十个元素(包含)到倒数第二个元素(不包含)
练习
使用for循环生成一个1~100的数组[1,2,3,….,99,100], 使用slice()截取33~55的部分[33,34,…54,55]

var arr=[]
for(i=0;i<100;i++){
 arr[i]=i+1
}
var newArr=arr.slice(32,55)

数组更新

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”]; 

练习
使用for循环生成一个1~100的数组[1,2,3,….,99,100], 使用splice()将其中的66修改为666,并在3和4之间插入3.14

var arr=[]
for(i=0;i<100;i++){
  arr[i]=i+1
}
arr.splice(65,1,666)
arr.splice(2,0,3.14)

数组归并

reduce()
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

arr.reduce(function(acc,cur,index,arr){}, initialValue)

acc: 必选 accumulator 累加器,计算结束后的返回值
cur: 必选 currentValue 当前元素
index: 可选 currentIndex 当前元素的索引
arr: 可选 currentArray 当前元素所属的数组
initialValue: 可选 传递给函数的初始值
数组求和

var arr=[1,2,3,4]
var result=arr.reduce(funcation(a,b){
    return a+b
})

二维数组合并为一维数组

var arr=[[1,2],[3,4],[5,6]]
var result=arr.reduce(funcation(a,b){
    return a.concat(b)
})

数组去重

var arr=[1,2,4,3,3,2,1,5,4]
var result=arr.reduce(funcation(a,b){
    if(a.indexOf==-1){
       a.push(b)
    }
    return a
},[])

求数组中的最大值

var arr=[1,3,4,6,7,2,5]
var result=arr.reduce(funcation(a,b){
    return Math.max(a,b)
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值