最新数组方法
/
最新数组方法
# 一、 会改变原素组的
- 1 arr.push() 从后面添加元素,返回值为添加完后的数组的长度
let arr = [1, 2, 3, 4, 5]
console.log(arr.push(5)) // 6
console.log(arr) // [1,2,3,4,5,5]
- 2 arr.splice(i,n) 删除从 i(索引值)开始之后的n个元素。返回值是删除的元素,会改变原素组
let arr = [1, 2, 3, 4, 5]
console.log(arr.splice(2, 2)) //[3,4]
console.log(arr) // [1,2,5]
- 4 arr.sort() 将数组进行排序,返回值是排好的数组,不传参的话,默认是按照最左边的数字 ASIC 码进行排序,不是按照数字大小排序的,见例子。
let arr = [2, 10, 6, 1, 4, 22, 3]
arr.sort((a, b) => a - b)
console.log(arr.sort()) // [1, 10, 2, 22, 3, 4, 6]
let arr1 = arr.sort((a, b) => a - b)
console.log(arr1) // [1, 2, 3, 4, 6, 10, 22]
let arr2 = arr.sort((a, b) => b - a)
console.log(arr2) // [22, 10, 6, 4, 3, 2, 1]
- 5 arr.reverse() 将数组反转,返回值是反转后的数组
let arr = [1, 2, 3, 4, 5]
console.log(arr.reverse()) // [5,4,3,2,1]
console.log(arr) // [5,4,3,2,1]
- 6 arr.forEach(callback) 遍历数组,无 return 即使有 return,也不会返回任何值,并且会影响原来的数组
- 7 arr.pop() 从后面删除元素,只能是一个,返回值是删除的元素
let arr = [1, 2, 3, 4, 5]
console.log(arr.pop()) // 5
console.log(arr) //[1,2,3,4]
- 8 arr.shift() 从前面删除元素,只能删除一个 返回值是删除的元素
let arr = [1, 2, 3, 4, 5]
console.log(arr.unshift(2)) // 6
console.log(arr) //[2,1,2,3,4,5]
# 二、 不会改变原素组
- 1 str.split() 将字符串转化为数组
let str = '123456'
console.log(str.split('')) // ["1", "2", "3", "4", "5", "6"]
- 2 arr.slice(start,end) 切去索引值 start 到索引值 end 的数组,不包含 end 索引的值,返回值是切出来的数组
let arr = [1, 2, 3, 4, 5]
console.log(arr.slice(1, 3)) // [2,3]
console.log(arr) // [1,2,3,4,5]
- 3 arr.concat() 连接两个数组 返回值为连接后的新数组
let arr = [1, 2, 3, 4, 5]
console.log(arr.concat([1, 2])) // [1,2,3,4,5,1,2]
console.log(arr) // [1,2,3,4,5]
- 4 arr.map(callback) 映射数组(遍历数组),有 return 返回一个新数组 。
- 6 arr.filter(callback) 过滤数组,返回一个满足要求的数组
- 7 arr.every(callback) 依据判断条件,数组的元素是否全满足,若满足则返回 ture
let arr = [1, 2, 3, 4, 5]
let arr1 = arr.every((value, index) => value < 3)
console.log(arr1) // false
let arr2 = arr.every((value, index) => value < 6)
console.log(arr2) // true
- 8 arr.some() 依据判断条件,数组的元素是否有一个满足,若有一个满足则返回 ture
let arr = [1, 2, 3, 4, 5]
let arr1 = arr.some((value, index) => value < 3)
console.log(arr1) // true
let arr2 = arr.some((value, index) => value > 6)
console.log(arr2) // false
- 9 arr.reduce(callback, initialValue) 迭代数组的所有项,累加器,数组中的每个值(从左到右)合并,最终计算为一个值
let arr = [0, 1, 2, 3, 4]
let arr1 = arr.reduce((preValue, curValue) => preValue + curValue)
console.log(arr1) // 10
- 10 arr.indexOf() 查找某个元素的索引值,若有重复的,则返回第一个查到的索引值若不存在,则返回 -1
let arr = [1, 2, 3, 4, 5, 2]
let arr1 = arr.indexOf(2)
console.log(arr1) // 1
let arr2 = arr.indexOf(9)
console.log(arr2) // -1
- 11 arr.lastIndexOf() 和 arr.indexOf()的功能一样,不同的是从后往前查找
- 12 Array.from() 将伪数组变成数组,就是只要有 length 的就可以转成数组。 ---es6
let str = '12345'
console.log(Array.from(str)) // ["1", "2", "3", "4", "5"]
let obj = { 0: 'a', 1: 'b', length: 2 }
console.log(Array.from(obj)) // ["a", "b"]
- 13 Array.of() 将一组值转换成数组,类似于声明数组 ---es6
let str = '11'
console.log(Array.of(str)) // ['11']
- 14 arr.find(callback) 找到第一个符合条件的数组成员
let arr = [1, 2, 3, 4, 5, 2, 4]
let arr1 = arr.find((value, index, array) => value > 2)
console.log(arr1) // 3
- 15 arr.findIndex(callback) 找到第一个符合条件的数组成员的索引值
let arr = [1, 2, 3, 4, 5]
let arr1 = arr.findIndex((value, index, array) => value > 3)
console.log(arr1) // 3
- 16 arr.fill(target, start, end) 使用给定的值,填充一个数组,ps:填充完后会改变原数组
let arr = [1, 2, 3, 4, 5]
let arr1 = arr.fill(5)
console.log(arr1) // [5, 5, 5, 5, 5]
console.log(arr) // [5, 5, 5, 5, 5]
let arr2 = arr.fill(5, 2)
console.log(arr2)
let arr3 = arr.fill(5, 1, 3)
console.log(arr3)
- 17 arr.includes() 判断数中是否包含给定的值
let arr = [1, 2, 3, 4, 5]
let arr1 = arr.includes(2)
console.log(arr1) // ture
let arr2 = arr.includes(9)
console.log(arr2) // false
let arr3 = [1, 2, 3, NaN].includes(NaN)
console.log(arr3) // true
- 18 arr.keys() 遍历数组的键名
let arr = [1, 2, 3, 4]
let arr2 = arr.keys()
for (let key of arr2) {
console.log(key) // 0,1,2,3
}
- 19 arr.values() 遍历数组键值
let arr = [1, 2, 3, 4]
let arr1 = arr.values()
for (let val of arr1) {
console.log(val) // 1,2,3,4
}
- 20 arr.entries() 遍历数组的键名和键值
let arr = [1, 2, 3, 4]
let arr1 = arr.entries()
for (let e of arr1) {
console.log(e) // [0,1] [1,2] [2,3] [3,4]
}