除了Object类型以外,Array类型恐怕是js中最经常使用的类型了,而且随着js的发展进步,数组中提供的方法也愈来愈来,对数组的处理也出现了各类骚操做,此篇文章将会带你从新学习数组中的实例方法前端
参数:分隔符字符串数组
const arr = [1, 2, 3] console.log(arr.join('|')) // '1|2|3'
参数:无函数
const arr = [1, 2, 3] console.log(arr.toString()) // '1,2,3'
参数: item...(多个数组项)学习
let arr = ['a', 'b', 'c'] const count = arr.push('d') console.log(count) // 4 console.log(arr) // [ 'a', 'b', 'c', 'd' ]
参数:无this
let arr = ['a', 'b', 'c'] const item = arr.pop() console.log(item) // 'c' console.log(arr) // [ 'a', 'b' ]
参数:无code
let arr = ['a', 'b', 'c'] const item = arr.shift() console.log(item) // 'a' console.log(arr) // [ 'b', 'c' ]
参数:item...(多个数组项)对象
let arr = ['a', 'b', 'c'] const count = arr.unshift('d', 'e') console.log(count) // 5 console.log(arr) // [ 'd', 'e', 'a', 'b', 'c' ]
参数:无排序
let arr = ['a', 'b', 'c'] console.log(arr.reverse()) // [ 'c', 'b', 'a' ]
参数:compareFunction(可选)递归
- 若不传compareFunction,sort()方法回调用每一个数组项的toString()方法,而后比较获得的字符串 ```js let arr = [2, 3, 10] arr.sort() console.log(arr) // [ 10, 2, 3 ] ``` '10'位于'2'以前 - 若传compareFunction(a,b),若是返回值小于0,则a位于b以前,若是返回值等于0则位置不变,若是返回值大于,则b位于a以前 ```js let arr = [2, 5, 3, 1] arr.sort((a, b) => { if (a < b) { return -1 } else if (a > b) { return 1 } else { return 0 } }) console.log(arr) // [ 1, 2, 3, 5 ] ```
参数:item...(能够是数组项,也能够是数组)索引
let arr = [1, 2, 3] let newArr = arr.concat(4, 5, [6, 7]) console.log(newArr) // [ 1, 2, 3, 4, 5, 6, 7 ]
参数: start(起始位置),end(结束位置,可选)
let arr = [1, 2, 3, 4] let newArr = arr.slice(1, 3) console.log(newArr) // [ 2, 3 ]
tip: 若是slice方法的参数中有一个负数,则用数组长度加上该数来肯定相应的位置
三、splice()方法用法有多种,根据不一样的用法须要传递的参数也不同
let arr = [1, 2, 3, 4, 5] arr.splice(0, 1) console.log(arr) // [ 2, 3, 4, 5 ] arr.splice(1, 0, 'hello', 'world') console.log(arr) // [ 2, 'hello', 'world', 3, 4, 5 ] arr.splice(3, 1, 'js') console.log(arr) // [ 2, 'hello', 'world', 'js', 4, 5 ]
参数:item(要查找的数组项),index(指定开始查找的位置,可选)
let arr = [1, 2, 3, 4, 5] console.log(arr.indexOf(3)) // 2 console.log(arr.indexOf(3, 3)) // -1
一、every()方法对数组中每一项运行给定函数,若是该函数对每一项都返回true,则返回true
参数:callback(item, index, arr)
let arr = [3, 4, 5, 6] let result = arr.every((item) => item > 2) console.log(result) // true
参数:callback(item, index, arr)
let arr = [1, 2, 3, 4] let result = arr.some((item) => item > 3) console.log(result) // true
参数:callback(item, index, arr)
let arr = [1, 2, 3] let result = arr.map(item => item * 2) console.log(result) // [ 2, 4, 6 ]
参数:callback(item, index, arr)
let arr = [1, 2, 3, 4, 5] let result = arr.filter(item => item > 2) console.log(result) // [3, 4, 5]
参数:callback(item, index, arr)
let arr = [1, 2, 3, 4, 5] arr.forEach(item => { console.log(item) // 1 2 3 4 5 })
tip: 修改item的不会影响遍历的数组项
参数:callback(accumulator(累计器累计回调的返回值),currentValue(数组中正在处理的元素),currentIndex(数组中正在处理的元素的索引,若是提供了initialValue,则起始索引号为0,不然为1,可选),array(调用reducer的数组)), initialValue(做为第一次调用callback函数时的第一个参数的值。 若是没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错,可选)
let arr = [1, 2, 3, 4, 5] let result = arr.reduce((accumulator, current, index, array) => { return accumulator + current }) console.log(result) // 15 1+2+3+4+5
let arr = [1, 2, 3, 4, 5] let result = arr.reduce((accumulator, current, index, array) => { return accumulator + current }, 10) console.log(result) // 25 10+1+2+3+4+5
参数:arrayLike(想要转换成数组的伪数组对象或可迭代对象),mapFn(若是指定了该参数,新组数中的每一个元素会执行此回调函数,可选),thisArg(执行回调函数时this对象,可选)
let arrayLike = { 0: 1, 1: 2, 2: 3, length: 3 } console.log(Array.from(arrayLike)) // [1, 2, 3]
let arrayLike = { 0: 1, 1: 2, 2: 3, length: 3 } console.log(Array.from(arrayLike, (item) => item * 2)) // [2, 4, 6]
在实际应用中更多应用于Dom操做返回的集合以及函数内部的arguments对象
参数:item...(任意个参数,将按顺序返回数组中的元素)
let result = Array.of(2, 3, 4) console.log(result) // [ 2, 3, 4 ]
参数:target(从该位置开始替换数据),start(从该位置开始读取数据,默认为0,若是为负值表示倒数,可选),end(到该位置前,中止读取数据,默认为数组长度,若是为负值,表示倒数)
let arr = [1, 2, 3, 4, 5] arr.copyWithin(0, 3, 5) console.log(arr) // [ 4, 5, 3, 4, 5 ]
参数:callback(item, index, arr)
let arr = [1, 2, 3, 4, 5] let result = arr.find(item => item > 3) console.log(result) // 4
参数:value(填充数组元素的值),start(起始索引,可选),end(终止索引,可选)
let arr = [1, 2, 3, 4, 5] arr.fill(6, 2, 5) console.log(arr) // [ 1, 2, 6, 6, 6 ]
参数:无
let arr = ['a', 'b', 'c'] for (let idx of arr.keys()) { console.log(idx) // 0 1 2 } for (let item of arr.values()) { console.log(item) // 'a' 'b' 'c' } for (let [idx, item] of arr.entries()) { console.log(idx + '---' + item) // '0---a' '1---b' '2---c' }
参数:value(要查找的元素),start(开始查找的位置,可选)
let arr = ['a', 'b', 'c'] console.log(arr.includes('a')) // true console.log(arr.includes('d')) // false
参数:depth(要提取数组的嵌套结构深度,默认为1,可选)
let arr = ['a', 'b', ['c', 'd']] let result = arr.flat() // ["a", "b", "c", "d"] let arr1 = ['a', ['b', ['c']]] //使用 Infinity 做为深度,展开任意深度的嵌套数组 let result1 = arr1.flat(Infinity) // ["a", "b", "c"]
此篇文章记录了JS中数组经常使用的方法,毕竟数组的实例方法有那么多,好记性不如烂笔头,写下此篇文章加深记忆,同时但愿对你们也能有所帮助。若是有错误或不严谨的地方,欢迎批评指正,若是喜欢,欢迎点赞