js 数组方法大全(示例+解析)

今天突然想要好好整理一下js数组的所有方法,一直知道挺多的,今天整理完才发现这么多!!

有11个常规方法和9个高阶方法,一篇文章给你全讲完!可以收藏起来慢慢看哦

1、slice
定义:从当前数组中选择元素,返回一个新数组。第一个参数表示选择元素的起始位置,第二个元素表示选择元素的结束位置

语法:array.slice(start,end)

示例:

//slice 示例
var arr = [1,2,3,4,5]

var arr2 = arr.slice(0,3) 
console.log(arr2)  //[1,2,3]     选取从索引0到索引3的元素,不包含索引3

var arr3 = arr.slice(2)
console.log(arr3)  //[3,4,5]     选取从索引2到数组结尾的所有元素

var arr4 = arr.slice()
console.log(arr4)  //[1,2,3,4,5] 没有传任何参数时,默认选择所有元素,即复制一个数组

var arr5 = arr.slice(-3,-1)
console.log(arr5)  //[3,4]  参数为负数时,从数组末尾算起,选取数组末尾第3个元素到数组末尾第1个元素

console.log(arr)  //[1,2,3,4,5]  注意slice不改变原数组,而是返回一个新数组

接下来这个是splice,在数组方法中很常用,而且和slice只差一个字母,注意不要弄混

2、splice
定义:从当前数组中删除或者添加元素,并返回被删除的元素

语法:array.splice(index,num,item1,item2,...,itemX)

示例:

//splice 示例
var arr = ['a','b','c','d','e']

var arr2 = arr.splice(0,1) 
console.log(arr2)  //['a']          从0索引开始数起,删除一个元素,并返回被删除的元素组成的数组

console.log(arr)   //['b','c','d','e']注意splice会改变原数组,第一个元素已经被删除掉了

var arr3 = arr.splice(1,2)
console.log(arr3)  //['c','d']      从1索引开始数起,删除两个元素,并返回被删除的元素组成的数组

console.log(arr)   //['b','e']      现在原数组只剩下b,e两个元素了,我们再添加一些新元素

var arr4 = arr.splice(0,0,'f','g')
console.log(arr4)  //[]        

console.log(arr)  //['f','g','b','e']     不删除元素,并从0位置开始添加f,g两个元素

3、push
定义:在数组末尾添加元素,并返回数组长度

语法:array.push(item1,item2,...,itemX)

示例:

//push 示例
var arr = ['a','b']

var length = arr.push('c','d') 

console.log(length)  //4  返回数组的长度

console.log(arr)     //['a',b','c','d']   

4、pop
定义:删除数组末尾最后一个元素,并返回被删除的元素

语法:array.pop()

示例:

//pop 示例
var arr = ['a','b']

var element= arr.pop() 
console.log(element)    //b  删除数组最后一个元素,返回被删除的元素
console.log(arr)        //['a']   

var element2= arr.pop() 
console.log(element2)  //a  再删一个
console.log(arr)       //[]   

var element3= arr.pop() 
console.log(element3)  //undefined  无法操作空数组
console.log(arr)       //[]

5、shift
定义:删除数组的第一个元素,并返回被删除的元素

语法:array.shift()

示例:

//shift 示例
var arr = ['a','b']

var element= arr.shift() 
console.log(element)    //a  删除数组第一个元素,返回被删除的元素
console.log(arr)        //['b']   

var element2= arr.shift() 
console.log(element2)  //b  再删一个
console.log(arr)       //[]   

var element3= arr.shift() 
console.log(element3)  //undefined  无法操作空数组
console.log(arr)       //[]

6、unshift
定义:在数组头部添加元素,并返回数组长度

语法:array.unshift(item1,item2,...,itemX)

示例:

//unshift 示例
var arr = ['a','b']

var length = arr.unshift('c','d') 

console.log(length)  //4  返回数组的长度

console.log(arr)     //['c','d','a',b']   

7、concat
定义:连接多个元素或者数组,组成一个新数组,并返回新数组

语法:array.concat(item1,item2,...,itemX,arr1,arr2,...,arrX)

示例:

//concat 示例
var arr = ['a','b']

var arr2= arr.concat('c','d',[1,2],['e','f']) 

console.log(arr2)  //["a", "b", "c", "d", 1, 2, "e", "f"]   组成一个新数组

console.log(arr)     //['a',b']                             不改变原数组

8、reverse
定义:将数组反转

语法:array.reverse()

示例:

//reverse 示例
var arr = ['a', 'b', 'c', 'd']

arr.reverse() 

console.log(arr)     //['d','c','b','a']                   

9、indexOf
定义:在数组中从左往右查找某元素的位置,可以接收2个参数,第一个参数表示要查找的元素,第二个参数表示查找的起始位置,没有找到的话返回-1

语法:array.indexOf(item,start)

示例:

//indexOf 示例
var arr = ['a', 'b', 'c', 'd', 'b']

var index = arr.indexOf('a',2)
console.log(index)       //-1  从2的位置开始往右查找,找不到a这个元素           

var index2 = arr.indexOf('b',2)
console.log(index2)      //4  从2的位置开始往右查找,第一个出现b元素是在位置4  

var index3 = arr.indexOf('a')
console.log(index3)     //0  不传第二个参数默认从0开始查找,找到a的位置为0

10、lastIndexOf
定义:在数组中从右往左查找某元素的位置,可以接收2个参数,第一个参数表示要查找的元素,第二个参数表示查找的起始位置,没有找到的话返回-1

语法:array.lastIndexOf(item,start)

示例:

//lastIndexOf 示例
var arr = ['a', 'b', 'c', 'd', 'b']

var index = arr.lastIndexOf('a',2)
console.log(index)       //0  从2的位置开始往左查找,找到a的位置为0           

var index2 = arr.lastIndexOf('b',2)
console.log(index2)      //1  从2的位置开始往左查找,第一个出现b元素是在位置1

var index3 = arr.lastIndexOf('a')
console.log(index3)     //0  不传第二个参数默认从数组末尾开始查找,找到a的位置为0

11、join
定义:将数组中的每个元素通过分隔符连接起来,并返回字符串,只接收分隔符这一个参数,没传的话默认用逗号分隔

语法:array.join('分隔符')

示例:

//join 示例
var arr = ['a', 'b', 'c', 'd']

var string= arr.join('-')
console.log(string)       // a-b-c-d         

var string2= arr.join()
console.log(string2)      // a,b,c,d  没有传分隔符默认用逗号分隔

var string3= arr.join('')
console.log(string3)      // abcd    使用空格分隔

var arr2 = string3.split('')  //注意是split,不是slice也不是splice,这里是字符串方法
console.log(arr2)             //['a', 'b', 'c', 'd']  把字符串分割成字符串数组

以下是高阶方法:

12、map
定义:接收一个回调函数作为参数,对数组里面的每个元素进行处理,处理后的数据组成一个新数组,并返回。

语法:array.map(function(item, index, array){})

示例:

//map 示例
var arr = [1, 2, 3, 4, 5]
var arr2 = arr.map((item, index, array) => {
  console.log(item)         //数组中的元素
  console.log(index)        //元素索引
  console.log(array)        //数组自身
  return item * item
})
console.log(arr2)           //[1,4,9,16,25]   

var arr3 = arr.map(String); //调用自带的String方法可以把元素转换为字符串
console.log(arr3)           // ['1', '2', '3', '4', '5']

13、reduce
定义:接收一个函数(这个函数必须接收2个参数)作为参数,将数组中的前两个元素作用在这个函数中,然后将函数返回的结果和第三个元素做累积计算,以此类推

语法:array.reduce(function(x,y){})

示例:

//reduce 示例
var arr = [1, 2, 3, 4, 5]
var sum= arr.reduce((x,y) => {
  return x+y                   //x=1,y=2,求和后返回3
})                             //x=3,y=3,求和后返回6
                               //x=6,y=4,求和后返回10
                               //x=10,y=5,求和后返回15
console.log(sum)               //15  最终返回数组所有元素的和

14、sort
定义:对数组中的所有元素进行排序,可以接收一个函数来定义排序规则

语法:array.sort(function(x,y){})

示例:

//sort 示例
var arr = ['B','C','A']
arr.sort()     // ['A','B','C]   排序正常

var arr2 = ['B','a','C']
arr2.sort()   //['B','C','a']   字符串根据ASCII码排序,小写字母a的ASCII码在大写字母之后

var arr3 = [5,10,20,1]
arr3.sort()   //[1,10,20,5]默认把元素先转换为String再排序,'1'的ASCII码比'5'小

//所以不要使用sort默认排序!!要给sort传一个函数自定义排序规则
arr3.sort((x, y) => {
  if (x < y) {
    return -1      //把小的数排前面
  }
  if (x > y) {
    return 1
  }
  return 0
})
console.log(arr3)  //[1,5,10,20]

//也可以倒序
arr3.sort((x, y) => {
  if (x < y) {
    return 1      //把小的数排后面
  }
  if (x > y) {
    return -1
  }
  return 0
})
console.log(arr3)  //[20,10,5,1]

15、some
定义:接收一个函数作为条件,遍历数组中是否有元素满足这个条件,如果有,返回true,并停止遍历,如果没有元素符合条件则返回false

语法:array.some(function(item,index,array){})

示例:

//some 示例
var arr = [1, 20, 5, 10]
var value = arr.some((item, index, array) => {
  console.log(item)       //第一次是1,第二次是20,因为20已经大于10了,后面的数没有再继续遍历
  console.log(index)
  console.log(array)
  return item > 10
})
console.log(value)       //true

16、every
定义:接收一个函数作为条件,遍历数组中是否所有元素都满足这个条件,如果是,返回true,如果有一个不满足就返回false,并结束遍历

语法:array.every(function(item,index,array){})

示例:

//every 示例
var arr = [1, 20, 5, 10]
var value = arr.every((item, index, array) => {
  console.log(item)       //第一次是1,不满足条件,返回false,结束遍历
  console.log(index)
  console.log(array)
  return item > 10
})
console.log(value)       //false

17、filter
定义:接收一个函数作为条件,遍历数组中所有元素,满足条件的元素组成一个新数组,并返回新数组

语法:array.filter(function(item,index,array){})

示例:

//filter 示例
var arr = [1, 20, 5, 10]
var arr2= arr.filter((item, index, array) => {
  console.log(item)       
  console.log(index)
  console.log(array)
  return item >= 10
})
console.log(arr2)       //[20,10]

18、find
定义:接收一个函数作为条件,查找数组中满足这个条件的第一个元素,并返回这个元素,结束查找

语法:array.find(function(item,index,array){})

示例:

//find 示例
var arr = [1, 20, 5, 10]
var value= arr.find((item, index, array) => {
  console.log(item)       
  console.log(index)
  console.log(array)
  return item >= 10
})
console.log(value)       //20      10也符合条件,但是找到第一个以后,就结束查找了

19、findIndex
定义:接收一个函数作为条件,查找数组中满足这个条件的第一个元素,并返回这个元素的索引,结束查找

语法:array.findIndex(function(item,index,array){})

示例:

//findIndex 示例
var arr = [1, 20, 5, 10]
var value= arr.findIndex((item, index, array) => {
  console.log(item)       
  console.log(index)
  console.log(array)
  return item >= 10
})
console.log(value)       //1      10也符合条件,但是找到第一个以后,就结束查找了

20、forEach
定义:接收一个函数作为参数,将数组中的每个元素进行处理,并返回

语法:array.forEach(function(item,index,array){})

示例:

//forEach 示例
var arr = [1, 20, 5, 10]
var sum = 0
arr.forEach((item, index, array) => {
  console.log(item)       
  console.log(index)
  console.log(array)
  sum = sum+item
})
console.log(sum)       //36     

以上就是js数组的所有方法啦,有遗漏的话欢迎大家评论区补充哈~
如果有帮助到你,可以点击喜欢哈(笔芯)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339