关于数组的方法
新建数组
新建:let a = new Array()
新建并赋予初始值 let a = new Array(‘x’, ‘y’, ‘z’)
新建固定长度并用0进行填充 let a = new Array(10).fill(0)
判断数组
let arr = [12]
Object.prototype.toString.call(arr) === "[object Array]"
注:使用Object.prototype.toString.call()可以用来判断数据类型,包含对象、数组、字符串、symbol等
遍历数组
for
for (变量 of 对象)
for (变量 in 对象)
注:for in 遍历会遍历数组的所有可遍历属性
forEach()
注:返回undefined;入参:1、数组元素 2、下标 3、原数组
map()
注:返回新数组,如果在遍历中对遍历元素进行修改,修改结果会作为新数组的元素
filter()
注:遍历数组并返回符合条件的元素,返回新的数组
find()
例:[1, 2, 3, 4].find(res => res > 2) // 3
注1:找到符合条件的第一个元素并返回,之后不再继续遍历;找不到返回undefined
注2:不遍历空数组;
操作数组
[].push() 在数组最后一位添加新元素; 返回添加元素
[].pop() 删除数组最后一位元素;返回删除元素
[].unshift() 在数组首位添加新元素;返回添加元素
[].shift() 删除数组首位元素;返回删除元素
delete arr[10] 删除第11位元素
[].concat()拼接数组,入参可为单的或多个元素,也可为数组
[].slice() 切片
[].join() 连接数组元素为字符串
[].splice() 集大成者:兼有删除、添加、替换功能
[].splice(1, 2) 删除下标为1及其以后的两个元素; 返回删除元素形成的数组
[].splice(1, 0, ‘a’) 将数组下标为1的元素后面 添加 一个’a’
[].splice(1, 1, ‘a’)将数组下标为1的元素 替换 为’a’
[].reverse() 反转数组
数组的去重;交集和并集
方法1:filter + indexOf
利用filter遍历元素返回符合条件的特性和indexOf返回所存在的第一个元素的下标
let arr = [-10, 0, 1, 'a', 0, 5, 1, 'a']
let newArr = arr.filter( (item, index) => {
return arr.indexOf(item) === index
})
console.log(newArr) // [-10, 0, 1, "a", 5]
方法2: set
set对象存储的元素唯一
let newArr = [... new Set(arr)]
console.log(newArr) // [-10, 0, 1, "a", 5]
注:以上方法不适用对数组的引用类型的元素进行去重
数组的并集:可通过concat将两个数组合并;然后通过set()进行去重
let arr1 = [1, 0 , -10, -23, 5, 100]
let arr2 = [0 ,1, 2, 3, 4, 5]
let arr3 = [...new Set(arr1.concat(arr2))]
console.log(arr3) // [1, 0, -10, -23, 5, 100, 2, 3, 4]
数组的交集:
数组的扁平化
let arr = [1, [2, 3], [4, [5, [6]]]]
let newArr = arr.toString().split(',') // ["1", "2", "3", "4", "5", "6"]
注:新的数组会变成字符串数组
let arr1 = [1, 0 , -10, -23, 5, 100]
let arr2 = [0 ,1, 2, 3, 4, 5]
let arr3 = arr1.filter(item => {
return arr2.includes(item)
})
console.log(arr3) // [1, 0, 5]
数组的排序
[].sort()可以对元素进行排序;但是对数字数组会失效
例:
let arr = [1, 0 , -10, -23, 5, 100]
console.log(arr.sort()) //[-10, -23, 0, 1, 100, 5]
可通过如下写法更正:
let arr = [1, 0 , -10, -23, 5, 100]
arr.sort((a, b) => {
return a - b
})
console.log(arr) // [-23, -10, 0, 1, 5, 100]
以上是升序;降序则改为return b - a
排序算法
—TODO—