ES6小实验-复习数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6小实验-复习数组相关的知识,希望对你有一定的参考价值。

ES6给数组添加了不少方法,我先把之前的方法总结一下:
1.Array.isArray():检测数组

var arr = [a,b,c]
var str = abc
console.log(Array.isArray(arr))//true
console.log(Array.isArray(str))//false

2.push():接收任意数量的参数,把它们逐个添加到数组末尾

var arr = [a,b,c]
var item = arr.push(d,e)
console.log(item)//5
console.log(arr)//["a", "b", "c", "d", "e"]

 3.pop():从数组末尾移除最后一项

var arr = [‘a‘,‘b‘,‘c‘]
var item = arr.pop()
console.log(item)//c
console.log(arr)//["a", "b"]

4.shift():移除数组第一项并返回该项

var arr = [‘a‘,‘b‘,‘c‘]
var item = arr.shift()
console.log(item)//a
console.log(arr)//["b", "c"] 

5.unshift():能在数组前端添加任意个项并返回新数组长度

var arr = [‘a‘,‘b‘,‘c‘]
var item = arr.unshift(‘d‘,‘e‘)
console.log(item)//5
console.log(arr)//["d", "e", "a", "b", "c"]

 6.reverse():反转数据项的顺序,注意它已经把原数组改变了

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

7.sort():可以接收一个比较函数作为参数,比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,两参数相等则返回0,如果第一个参数应该位于第二个参数之后则返回一个正数

var arr = [2,4,6,3,1]
arr.sort(function(a,b) {
    return a - b
})
console.log(arr)//[1, 2, 3, 4, 6]

8.concat():基于当前数组中的所有项创建一个新的数组,感觉字符串的操作方法类似

var arr1 = [‘a‘,‘b‘,‘c‘]
var arr2 = [‘d‘,‘e‘,‘f‘]
var arr = arr1.concat(arr2)
console.log(arr)//["a", "b", "c", "d", "e", "f"]
console.log(arr1)//["a", "b", "c"]

 9.slice():截取原数组,构建一个新的数组,原数组保持不变

var arr = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘]
var arr1 = arr.slice(2)
var arr2 = arr.slice(2,3)
console.log(arr1)//["c", "d", "e"]
console.log(arr2)//["c"]

10.splice():这恐怕是最强大的数组方法,增,删,改,操作全能

  (1)增,可以向指定位置插入任意数量的项,只需提供三个参数,起始位置,0(要删除的项数)和要插入的项

var arr = [‘a‘,‘b‘,‘c‘]
arr.splice(1,0,‘d‘,‘e‘)
console.log(arr)//["a", "d", "e", "b", "c"]

  (2)删,提供两个参数,要删除的第一项的位置和要删除的项数

var arr = [‘a‘,‘b‘,‘c‘,‘d‘]
arr.splice(1,2)
console.log(arr)//["a", "d"]

  (3)改,结合上面两种方式,先删再增就是改

var arr = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘]
arr.splice(1,2,‘f‘,‘g‘)
console.log(arr)//["a", "f", "g", "d", "e"]

11.indexOf(),lastIndexOf() 它们都接收两个参数,要查找的项和查找起点位置的索引(可选的),indexOf()从开始向后查找,lastIndexOf从末尾向前查找

var arr = [‘a‘,‘b‘,‘c‘,‘d‘,‘c‘,‘e‘]
console.log(arr.indexOf(‘c‘, 3))//4
console.log(arr.lastIndexOf(‘c‘, 3))//2

12.every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true

var num = [1,2,3,4,5,6]
var everyResult = num.every(function(item, index, array){
    return (item > 0)
})
console.log(everyResult)//true

 13.filter():对数组中的每一项运行给定的函数,返回该函数会返回true的项组成的数组

var num = [1,2,3,4,5,6]
var filterResult = num.filter(function(item, index, array){
    return (item > 3)
})
console.log(filterResult)//[4, 5, 6]

14.forEach():对数组中的每一项运行给定的函数,这个方法没有返回值

var num = [1,2,3,4,5,6]
num.forEach(function(item, index, array){
    console.log(item)//1,2,3,4,5,6
})

15.map():对数组中每一项运行给定的函数,返回每次函数调用的结果组成的数组

var num = [1,2,3,4,5,6]
var mapResult = num.map(function(item, index, array){
    return item * 2
})
console.log(mapResult)//[2, 4, 6, 8, 10, 12]

16.some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true

var num = [1,2,3,4,5,6]
var someResult = num.some(function(item, index, array){
    return item > 5
})
console.log(someResult)//true

17.reduce(),reduceRight():迭代数组的所有项,然后构建一个最终返回的值,reduce()从第一项开始,reduceRight()从最后一项开始

var num = [1,2,3,4,5,6]
var reduceResult = num.reduce(function(prev, cur, index, array){
    return prev + cur
})
console.log(reduceResult)//21

 

以上是关于ES6小实验-复习数组的主要内容,如果未能解决你的问题,请参考以下文章

ES6小实验-复习字符串

ES6小实验-数组的扩展

ES6解构赋值

ES6小实验-函数的扩展

ES6解构

复习es6-解构赋值+字符串的扩展