js数组方法

本文详细介绍了JavaScript中常见的数组方法,如join()用于合并数组成字符串,sort()用于排序,reverse()反转数组,以及concat(),slice(),splice(),push(),pop(),unshift(),shift(),indexOf(),lastIndexOf(),forEach(),some(),every(),filter(),map(),reduce(),reduceRight()的用法和特点。
摘要由CSDN通过智能技术生成


join()

sort()

reverse()

concat()

slice()

splice()

push和pop()

unshift()和shift()

indexOf()和lastIndexOf

forEach() (ES5新增)

map() (ES5新增)

filter() (ES5新增)

every() (ES5新增)

some() (ES5新增)

reduce()和reduceRight() (ES5新增)

1.join(separator) 不改变数组

将数组里的元素组成一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符,该方法只接收一个参数:分隔符。

var arr = [1,2,3]

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

2.sort() 改变数组

按从小到大进行排序

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

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

3.reverse() 改变数组

反转数组

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

4.concat() 不改变数组

concat() 将参数添加到原数组中。这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回副本。

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

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

5.slice() 不改变数组

slice():返回从原数组中指定开始下标到结束下标之间的项组成的新数组。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下, slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。

var arr = [0,1,2,3,4,5,6,7,8,9]

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

6.splice() 改变数组

splice() 可以实现删除、插入和替换。

删除:第一个参数为要删除的第一项的位置,第二个参数为要删除的项数。例如, splice(0,2)会删除数组中的前两项

var arr = ['a','b','c']

console.log(arr.splice(0,2))  //['a', 'b']
console.log(arr)   //['c']

插入: 第一个参数(插入位置),第二个参数(0),第三个参数(插入的项)

var arr = ['a','b','c']

console.log(arr.splice(1,0,'insert'))//[]
console.log(arr)   //['a', 'insert', 'b', 'c']

替换:第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)

var arr = ['a','b','c','d','e']

console.log(arr.splice(1,2,'cook'))//['b','c']
console.log(arr)   //['a', 'cook', 'd', 'e']

7.push()和pop() 改变数组

push() 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。
pop() 数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。

var arr = ['a','b','c']

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

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

注意:pop()里面没有参数,即使有参数,也是删除最后一项。

8.unshift()和shift() 改变数组

unshift() 将参数添加到原数组开头,并返回数组的长度 。

shift() 删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。

var arr = ['c','d','e']

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

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

9.indexOf 和 lastIndexOf()

indexOf():接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的开头(位置 0)开始向后查找。
lastIndexOf:接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。

这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。在比较第一个参数与数组中的每一项时,会使用全等操作符。

var arr = [1,3,5,7,9,7,5,3,1]

console.log(arr.indexOf(7))      //3
console.log(arr.lastIndexOf(7))  //5
console.log(arr.indexOf(7,2))    //3
console.log(arr.lastIndexOf(7,4)) //3
console.log(arr.indexOf('dog'))   // -1

数组的迭代方法

1.forEach()

forEach() 方法对数组的每个元素执行一次提供的函数,该方法没有返回值

var arr = [1, 3, 5, 7, 9]
var sum = 0
arr.forEach((value, index, array) => {
  sum += value
})

console.log(sum)  //25

2.some()

some() 方法会依次执行数组的每个元素:

  • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
  • 如果没有满足条件的元素,则返回false。

注意: some() 不会对空数组进行检测。

注意: some() 不会改变原始数组。

var arr = [1, 3, 5, 7, 9]

var newArr = arr.some((item, index, array) => {
  console.log('item = ' + item +',index = ' + index + ',array = '  + array)
  return item > 5
})

console.log(newArr)
//item = 1,index = 0,array = 1,3,5,7,9
//item = 3,index = 1,array = 1,3,5,7,9
//item = 5,index = 2,array = 1,3,5,7,9
//item = 7,index = 3,array = 1,3,5,7,9
//true

3.every()

every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。

every() 方法使用指定函数检测数组中的所有元素:

  • 如果数组中检测到有一个元素不满足,则整个表达式返回 false,且剩余的元素不会再进行检测。
  • 如果所有元素都满足条件,则返回 true。

注意: every() 不会对空数组进行检测。

注意: every() 不会改变原始数组。

var arr = [1, 3, 5, 7, 9]

var newArr = arr.every((item, index, array) => {
  console.log('item = ' + item +',index = ' + index + ',array = '  + array)
  return item > 5
})

console.log(newArr)
//item = 1,index = 0,array = 1,3,5,7,9
//false

4.filter()

filter用于对数组进行过滤
它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意:filter()不会对空数组进行检测、不会改变原始数组

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]

var newArr = arr.filter((item, index, array) => {
  return item > 5
})

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

5.map()

map()返回一个新的数组,新返回数组中的每个元素为原始数组的每一个元素分别调用map中的回调函数处理后的值。

注意:

  • map()不会对空数组进行检测
  • map()不会改变原始数组(返回新数组)
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

var newArr = arr.map((item, index, array) => {
          return  item * item
})
console.log(newArr)  //[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
console.log(arr)     //[1, 2, 3, 4, 5, 6, 7, 8, 9]

6.reduce() 和 reduceRight()

语法

array.reduce(function(prev, current, currentIndex, arr){}, initialValue)
  1. prev:函数传进来的初始值或上一次回调的返回值
  2. current:数组中当前处理的元素值
  3. currentIndex:当前元素索引
  4. arr:当前元素所属的数组本身
  5. initialValue:传给函数的初始值
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

var sum = arr.reduce((prev, item, index, array) => {
          return  prev + item
},0)
console.log(sum)     //55
console.log(arr)     //[1, 2, 3, 4, 5, 6, 7, 8, 9]

reduceRight()与reduce()使用一样,只不过是从后往前遍历。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值