首页 > 代码库 > ES6小实验-复习数组

ES6小实验-复习数组

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

var arr = [a,b,c]var str = abcconsole.log(Array.isArray(arr))//trueconsole.log(Array.isArray(str))//false

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

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

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

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

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

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

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

var arr = [‘a‘,‘b‘,‘c‘]var item = arr.unshift(‘d‘,‘e‘)console.log(item)//5console.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))//4console.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小实验-复习数组