最全的js数组操作方式(全干货直接明了)

1:join()        

 主要用于将原数组内的所有元素连接在一起转化为字符串,并返回这个字符串

var arr=[1,2,3]         
    arr.join('-')   
    console.log(arr)     
打印返回"1-2-3"

2:sort()         

将数组中的每个元素按一定条件排序后返回排序后的新数组,会改变原数组

var arr=[11,33,22] 
    arr.sort(function(a,b){ return a-b}) 
    console.log(arr)
返回 [11,22,33 ]
    arr.sort(function(a,b){ return b-a})
    console.log(arr)
返回 [33,22,11]

3:reverse()         

将数组中的元素颠倒,并返回颠倒后的数组(会改变原数组)

var arr=[1,2,3] 
    arr.reverse()
    console.log(arr) 
返回[3,2,1]

4:concat         

将合并两个数组。并且返回一个新数组,不会改变原数组

var arr=[1,2,3] 
var brr=[2,3] 
var newarr=arr.concat(brr) 
    conso.log(newarr)
返回[1,2,3,2,3]

5:slice()         

返回指定的一个数组片段;有两个参数,第一个不能省略,第二个可以省略

第一个参数表示截取的起始位置,第二个参数表示数组片段的结束位置, 

var arr = [1,2,3,4,5,6,7]
arr.slice(1,3)                //返回  [2,3]
arr.slice(3)                  //返回  [4,5,6,7]
arr.slice(4,-1)               //返回  [5,6]
arr.slice(-3)                 //返回  [5,6,7]
arr.slice(-3,-2)              //返回  [5]

6:splice()        

在数组指定位置插入或删除元素,并返回删除元素组成的数组(会改变原数组)         

  • 第一个参数:删除或插入元素的起始位置;
  • 第二个参数:从起始位置开始往后需要删除的元素个数。若该元素省略,则表示从起始位置开始到最后的所有元素都删除;
  • 第三个参数及之后的所有参数:将该值作为数组的元素依次插入到第一个参数表示的位置上       
var arr = [1,2,3,4,5,6,7]

arr.splice(4)                                  //返回 [5,6,7],此时arr为[1,2,3,4]
arr.splice(1, 2)                               //返回 [2,3],此时arr为[1,4]
arr.splice(1, 0, 'new1', 'new2')               //返回[],此时arr为[1,'new1','new2',4]

7:push()         

在数组尾部添加一个或多个元素,并返回数组的长度(会改变原数组)

var arr = []
arr.push(1)       //返回 1, 此时arr为 [1]
arr.push(5)       //返回 2, 此时arr为 [1,5]
arr.push(3,2)     //返回 4, 此时arr为 [1,5,3,2]

8:pop()         

删除数组最后一个元素,并返回该元素(会改变原数组)

9:unshift()        

在数组头部第一项添加一个或多个元素,并返回数组的长度(会改变原数组)

10:shift()        

 删除数组第一个元素,并返回该元素(会改变原数组)

11:toString()         

将数组转化为字符串并用逗号分隔连接起来的字符串(不会改变原数组)

如果遇到数组嵌套数组的话,同样也会将该嵌套数组的每个元素转化为字符串并连接起来

[1,2,3].toString()                          //返回 '1,2,3'
['cherry','apple','bannana'].toString()     //返回 'cherry,apple,banana'
[1,2,[6,7]].toString()                      //返回 '1,2,6,7'
[1,[3,6,[8,9]]].toString()                  //返回 '1,3,6,8,9'

12:forEach()         

循环遍历ES5新增 用来为每个元素调用指定的函数(可以修改原数组)

var a = [1,2,3,4,5]
a.forEach(function (value, index, arr) {
    arr[index] = value + 2
})
console.log(a)          // [3,4,5,6,7]

13:map()

ES5新增 将调用的数组的而每个元素传递给指定的函数,吧每次调用的回调函数的返回值存入到一个新的数组,最后返回新的数组(不会改变原数组)

var arr = [1,2,3,4,5]
var new_arr = arr.map((value) => {
    return value * value
})
console.log(new_arr)      //  [1, 4, 9, 16, 25]

14:filter()

ES5新增的 过滤器,通过回调函数里的逻辑判断过滤掉不需要的元素,再将剩下的元素都放到一个新的数组中并返回(不会改变原数组)

  • a: 元素
var arr = [6, 12, 7, 1, 9, 3, 0, 19]
var new_arr = arr.filter((value) => {
    return value < 6
})
console.log(new_arr)        // [1, 3, 0]
  • b: 索引位置
var arr = [6,12,7,1,9,3,0,19]
var new_arr = arr.filter(function (value, index) {
    return index % 2 === 0
})
console.log(new_arr)       // [6, 7, 9, 0]

15:every()

针对一个数组的逻辑判定(不会改变元原数组)

返回值全部为true时,最后返回true,只要有一个不为true,就会返回false

var arr = [1,2,3,4,5,6,7,8]
var result = arr.every((value)=> {
    return value < 10
})
console.log(result)      // true

16:some()  

和上者方法类似 逻辑判断略有不同

只要有一个为true就会返回true,只有全部返回值为false。最后才返回false

var arr = [3, 8, 9, 45, 12]
var result = arr.some(function (value) {
    return value === 12
})
console.log(result)      // true, 表示该数组中有元素12

17:reduce()

通过调用指定的回调函数及那个数组元素进行组合,并返回组合后的值(不会改变原数组)

参数(共2个):

  1. 第一个参数:为回调函数,用于处理数组元素。该回调函数有两个参数x、y,这两个参数都为调用 数组的元素成员
  2. 第二个参数:为可选参数,作为传递给回调函数的初始值。若省略该参数,则将数组的第一个数作为初初始值
  • 一个参数实例
var arr = [1,2,3,4,5,6]
var result = arr.reduce(function (x, y) {
    return x * y
})
console.log(result)          // 720
  • 两个参数实例
var arr = [10, 11, 13, 14, 12]
var result = arr.reduce(function (x, y) {
    return x + y
}, 29)         //这里将老师的年龄29作为reduce()方法的第二个参数
console.log(result)             // 89

18:reduceRight()

和上者方法类似,不同的是,后者在调用数组元素的时候是从左往右调用的,前者是从右往左调用

19:indexOf()

是获取某元素在数组中的索引,并且只返回第一个匹配到的元素的索引,若该元素不在数组中,则返回-1(不会改变原数组)

参数:第一个参数必填,为需要查询的元素,第二个参数为可选参数,标识从数组的那个位置开始搜索

  • 一个参数实例
var arr = ['小红', '小明', '张三', '李四', '王五']
var index = arr.indexOf('张三') + 1
console.log(index)          // 3, 表示张三成绩排名第三
  • 两个参数实例
var arr = ['张三', '小红', '小明', '张三', '李四', '王五']
//给indexOf()        //方法的第二个参数赋值1,表示从数组的第二个元素开始找
var index = arr.indexOf('张三', 1) + 1
console.log(index)          // 4, 表示成绩差点的张三排名第四
  • 第三个实例
var arr = ['小红', '小明', '张三', '李四', '王五']
var index = arr.indexOf('小王')
if(index === -1) {
    console.log('false')
}
else {
    console.log('true') 
}                            //  false

20:lastIndexOf()

和indexOf()类似,唯一区别就是,前者是从数组的末尾开始搜索,后者是数从数组 二点开头开始搜索

ES6方法:

21:find()

ES6新增的遍历数组,找出并返回第一个符合回调函数的元素(可以通过回调函数的某些参数对原数组进行改动)

var arr = [1, 7, 3, 10, 12, 20]
var result = arr.find(function (value) {
    return value > 10
})
console.log(result)   // 12, 表示数组中找到的第一个比10大的元素为12

22:findIndex()

ES6新增的遍历数组,找出第一个符合回调函数的元素的索引(不会改变原数组)

var result = [3, 4, 10, 8, 9, 0].findIndex(function (value) {
    return value > 9
})
console.log(result)   // 2,表示该数组中第一个大于9的元素索引为2

23:fill()

ES6新增的方法,用于填充数组的(会改变原数组)

参数(共3个):

  1. 第一个参数:表示用于填充数组的值
  2. 第二个参数:可选参数,表示填充的起始位置
  3. 第三个参数:可选参数,表示填充的结束位置,若省略该参数并且填写了第二个参数,则表示从起始位置开始一直到末尾的所有元素都被填充
[1,2,3,4,5].fill(6)         //返回 [6, 6, 6, 6, 6]
[1,2,3,4,5].fill(6, 2)      //返回 [1, 2, 6, 6, 6]
[1,2,3,4,5].fill(6, 2, 3)   //返回 [1, 2, 6, 4, 5]

24:includes()

ES6新增的非常实用的方法,判断一个数是否在该数组中(不会改变原数组)

参数(共2个):

  1. 第一个参数:该参数为需要判断是否存在于数组中的数
  2. 第二个参数:表示搜索的起始位置,默认为0,即从头开始搜索。若为负数,则表示从倒数第几个开始搜索,若输入的位置超出了数组长度,则默认还是为0
  • 一个参数实例
var arr = ['chery', 'banana', 'apple', 'watermelon']
var result = arr.includes('banana')
console.log(result)    //true, 表示banana在数组中
  • 两个参数实例
var arr = ['chery', 'banana', 'apple', 'watermelon']
var result = arr.includes('banana', -2) //表示从倒数第二个开始找
console.log(result) //false, 表示从倒数第二个开始找,没有找到banana

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值