09.数组的常用方法

73 阅读8分钟

1.push

语法: 数组.push(数据)

作用:向数组末尾添加数据

返回值:追加数据后,数组的最新长度

var arr = [1,2,3]
console.log(arr)
var len = arr.push(500)
console.log(len) //4
console.log(arr) //[1,2,3,500]

2.pop

语法: 数组.pop()

作用:删除数组最后一条数据

返回值:被删除的数据

var arr = [1,2,3]
console.log(arr)
var po = arr.pop()
console.log(po) //3
console.log(arr)//[1,2]

3.unshift

语法: 数组.unshift(数据)

作用:向数组开头添加数据

返回值:添加数据后,数组的最新长度

var arr = [1,2,3]
console.log(arr)
var len = arr.unshift(666)
console.log(len)//4
console.log(arr)//[666,1,2,3]

4.shift

语法: 数组.shift()

作用:删除数组第一条

返回值:被删除的数据

var arr = [1,2,3]
console.log(arr)
var st = arr.shift()
console.log(st)//1
console.log(arr)//[2,3]

5.reverse

语法: 数组.reverse()

作用:反转数组

返回值:反转后的数组

var arr = [1,2,3]
console.log(arr)
var newArr = arr.reverse()
console.log(newArr)//[3,2,1]
console.log(arr)//[3,2,1]

6.sort

返回值:排序后的数组

语法1: 数组.sort()

作用:将数组转化为字符串后,一位一位地对比

var arr = [100,101,200,10001,100002,1000003,10]
console.log('原始数组:',arr)
var arr1 = arr.sort()
console.log(arr1)//[10,100,1000003,100002,10001,101,200]
console.log(arr)//[10,100,1000003,100002,10001,101,200]

语法2: 数组.sort(function(a,b){return a - b})

作用:按照数字大小升序排列

var arr = [100,101,200,10001,100002,1000003,10]
console.log('原始数组:',arr)
var arr1 = arr.sort(function(a,b){return a - b})
console.log(arr1)//[10,100,101,200,10001,100002,1000003]
console.log(arr)//[10,100,101,200,10001,100002,1000003]

语法3: 数组.sort(function(a,b){return b - a})

作用:按照数字大小降序排列

var arr = [100,101,200,10,'999','123abc','qwe']
console.log('原始数组:',arr)
var arr1 = arr.sort(function(a,b){return b
- a})
consolr.log(arr1)//['999',200,101,100,10,'123abc','qwe']
consolr.log(arr)//['999',200,101,100,10,'123abc','qwe']

7.splice

返回值:截取出来的部分内容 组成的数组

语法1:数组.splice(开始索引,多少个)

作用:截取数组部分内容

var arr = [1,2,3,4,5,6,7,8,9]
console.log('原始数组:', arr)
var arr1 = arr.splice(3,4)//从下标3开始截取,截取4个数据
console.log(arr1)//[4,5,6,7]
console.log(arr)//[1,2,3,8,9]

语法2:数组.splice(开始索引,多少个,插入的数据1,插入的数据2...)

作用:截取数组部分内容,并插入新的数据

var arr = [1,2,3,4,5,6,7,8,9]
console.log('原始数组:', arr)
var arr1 = arr.splice(3,4,'数据1','数据2')
console.log(arr1)//[4,5,6,7]
console.log(arr)//[1,2,3,'数据1','数据2',8,9]

8.slice

语法:数组.slice(开始索引,结束索引)

参数:1.包前不包后;2.不写开始索引的话默认是0,不写结束索引默认是数组的length;3.参数支持写负数,表示倒数第几个,也就是length+负数

作用:截取数组部分内容

返回值:截取出来的部分内容组成的新数组

var arr = [1,2,3,4,5,6,7,8,9]
console.log('原始数组:', arr)

var arr1 = arr.slice(3,4)
console.log(arr1)//[4]

var arr2 = arr.slice(5)//不写结束索引,相当于写了数组.length
console.log(arr2)//[6,7,8,9]

var arr3 = arr.slice()//什么都没写,相当于写了arr.slice(0,arr.length)
console.log(arr3)//[1,2,3,4,5,6,7,8,9]

var arr4 = arr.slice(3,-2)//相当于arr.slice(3,7)
console.log(arr4)//[4,5,6,7]

console.log(arr)//[1,2,3,4,5,6,7,8,9]

9.concat

语法: 数组.concat(数组1,数组2...)

作用:进行数据拼接,把小括号里面的东西拼接在原数组中

返回值:拼接好的数组

var arr = [1,2,3]
console.log('原始数组:',arr)//[1,2,3]
var arr1 = arr.concat([4,5,6],[10,20],['a','b','c'],'qwer')
 console.log(arr1)//[1, 2, 3, 4, 5, 6, 10, 20, 'a', 'b', 'c', 'qwer']
 console.log(arr)//[1,2,3]

10.join

语法: 数组.join('连接符')

作用:使用"连接符",把数组内的每一个数据连接成一个字符串(不写连接符,默认使用的是 逗号)

返回值:连接好的字符串

var arr = [1,2,3]
console.log('原始数组:',arr)//[1,2,3]

var arr1 = arr.join()//不写连接符,默认是逗号
console.log(arr)//1,2,3

var arr2 = arr.join('!')
console.log(arr)//1!2!3

console.log(arr)//[1,2,3]

11.indexOf

语法: 数组.indexOf(要检查的数据,开始索引)

作用:在开始索引的位置,从前到后(从左到右)检查该数据第一次在该数组内出现的索引

返回值:找到数据的情况下,会将该数据第一次出现的索引返回;没找到的情况下,会直接返回-1

*备注:开始索引不写的时候 默认是0

var arr = [1,1,2,2,3,3,0,4,0]

var arr1 = arr.indexOf(0)
console.log(arr1)//6

var arr2 = arr.indexOf(1,3)//此时要检索的数字是1,从下标为3的位置上按照从左到右的顺序查找,因为后续并没有数字1,所以此时应该返回-1
console.log(arr2)//-1

12.lastIndexOf

语法: 数组.lastIndexOf(要检查的数据,开始索引)

作用:在开始索引的位置,从右到左检查该数据第一次在该数组内出现的索引

返回值:找到数据的情况下,会将该数据第一次出现的索引返回;没找到的情况下,会直接返回-1

var arr = [1,1,2,2,3,3,0,4,0]

var arr1 = arr.lastIndexOf(3)
console.log(arr1)//5

var arr2 = arr.lastIndexOf(3,2)//此时在下标2的位置按照从右向左的顺序查找,但是此时在数组中后续的位置并未出现数字3,所以应该返回-1
console.log(arr2)//-1

13.forEach

语法:数组.forEach(function(item,index,origin){})

*item:数组的每一项的值

*index:数组的每一项对应的下标

*origin:原始数组 (了解即可,一般没人用)

作用:遍历数组

返回值:该方法永远没有返回值(undefined)

var arr = [100,200,300,400,500,600]
arr.forEach(function(item,index,origin){
    console.log(item,index)
    console.log(origin)
})

14.map

语法:数组.map(function(item,index,origin){})

作用:映射数组

返回值:返回一个和原始数组长度相同的数组,但是内部数据可以经过我们的映射加工

映射加工:就是在函数内 以return的形式书写

var arr = [100,200,300,400,500,600]
var arr1 = arr.map(function(item,index,origin){
    return item * 2
})
console.log(arr1)// [200,400,600,800,1000,1200]

15.filter

语法:数组.filter(function(item,index,origin){})

作用:过滤数组

返回值:返回一个新数组,内部存储的是原始数组过滤出来的部分内容

过滤条件: 过滤条件以return的形式书写

var arr = [100,200,300,400,500,600]
var arr1 = arr.filter(function(item,index,origin){
    return item > 350
})
console.log(arr1)

16.find

语法:数组.find(function(item,index,origin){})

作用:在数组内查找满足条件的第一项

返回值:找到的数据,如果没找到返回的是undefined

*查找条件以 return 的形式书写

var arr = [100,200,300,400,500,600]
var arr1 = arr.find(function(item,index,origin){
    return item > 350
})
console.log(arr1)// 400

17.findIndex

语法:数组.findIndex(function(item,index,origin){})

作用:在数组内查找满足条件的第一项的下标

返回值:找到的数据的下标,人如果没找到返回的是-1

*查找条件以 return 的形式书写

var arr = [100,200,300,400,500,600]
var arr1 = arr.findIndex(function(item,index,origin){
    return item >350
})
console.log(arr1)// 3

18.some

语法:数组.some(function(item,index,origin){})

作用:判断数组内是否有一个满足条件

返回值:一个布尔值 true/false

*判断条件以 return 的形式书写

var arr = [100,200,300,400,500,600]
var arr1 = arr.some(function(item,index,origin){
    return item > 500
})
console.log(arr1)// true

19.every

语法:数组.every(function(item,index,origin){})

作用:判断数组内是否全都满足条件

返回值:一个布尔值 true/false

*判断条件以 return 的形式书写

var arr = [100,200,300,400,500,600]
var arr1 = arr.every(function(item,index,origin){
    return item >350
})
console.log(arr1)// false

20.reduce

语法:数组.reduce(function(prev,item,index,orign{},init))

*prev: 表示初始值或者上一次的运算结果

*item:数组的每一项的值

*index:数组的每一项对应的下标

*origin:原始数组

作用:用来实现叠加效果

返回值:最终叠加的结果

注意点:

  • 叠加条件以 return 的形式书写
  • prev 的值,如果传递了 init,就是 init 的值,如果没有传递 init ,那么就是数组下标[0]的值
  • 如果传递了 init,循环执行 数组.length 次,如果没有传递 init, 循环执行 数组.length - 1 次
var arr = [1,2,3,4]
console.log('原始数组:',arr)

var str1 = arr.reduce(function(prev,item,index,origin){
    return prev + item
},0)
console.log( str1)//10

var str2 = arr.reduce(function(prev,item,index,origin){
    return prev + item
})
console.log( str2)//10