数组操作
arr.map()
将元素放入函数依次执行,返回结果组成的数组
javascript
arr = [1, 2, 3, 4, 5]
newArr = arr.map(item => item*2)
// arr = [1, 2, 3, 4]
// newArr = [2, 4, 6, 8]
arr.forEach()
将元素依次放入函数处理,无返回值
javascript
arr = [1, 2, 3, 4]
arr.forEach(item => item*2)
arr.filter()
将元素依次放入函数处理,将值为真的元素返回
javascript
arr = [1, 2, 3, 4]
newArr = arr.filter(item => item>2)
// newArr = [3, 4]
arr.every()
将元素依次放入函数处理,若所有返回值都为true则结果为true,否则为false
javascript
arr = [1, 2, 3, 4]
res = arr.every(item => item>3)
res2 = arr.every(item => item<5)
// res false
// res2 true
arr.some()
将元素依次放入函数处理,若返回值中存在true则结果为true,全为false时结果才为false
JavaScript
arr = [1, 2, 3, 4]
res = arr.every(item => item>3)
res2 = arr.every(item => item>5)
// res true
// res2 false
arr.reduce()
将元素依次放入函数处理,函数参数为两个值,第一个值为上一次的返回值,第二个值为迭代传递的元素
JavaScript
// 累加器
arr = [1, 2, 3, 4]
res = arr.reduce((ans, item) => {
return ans + item
})
//res 10
// 高阶函数应用
// 此应用处略
arr.push()
在数组尾部添加元素,原数组改变
arr.pop()
删除数组尾部元素,原数组改变
arr.shift()
删除数组头部元素,原数组改变
arr.unshift()
将一个或多个元素添加到数组开头,原数组变为增加后的数组
javascript
arr = [1, 2, 3, 4]
arr.unshift(5, 6, 7)
// arr [5, 6, 7, 1, 2, 3, 4]
arr.concat()
将一个或多个数组拼接到尾部,原数组不变
javascript
arr = [1, 2, 3]
arr.concat([1, 2], [5, 4, 7])
// [1, 2, 3, 1, 2, 5, 4, 7]
arr.isArray()
判断对象是否为数组
arr.toString()
将数组转化为字符串并返回
javascript
arr = [1, 2, 3, 4]
str = arr.toString()
// str 1,2,3,4,5
arr.join()
将数组转化为字符串并返回,可设置连接的字符
javascript
arr = [1, 2, 3]
s1 = arr.join()
s2 = arr.join('')
s3 = arr.join(',')
s4 = arr.join('####')
//s1 1,2,3
//s2 123
//s3 1,2,3
//s4 1####2####3
arr.splice()
删除指定起始位置的指定个元素,可实现增删改,返回删除的元素组成的数组,原数组会改变
javascript
arr = [1, 2, 3, 4, 5]
// 数组本身被修改,
arr1 = arr.splice(2, 0, '666') //增
// arr1 []
// arr [ 1, 2, '666', 3, 4, 5 ]
arr2 = arr.splice(1, 3) //删
// arr2 [ 2, 3, 4 ]
// arr [ 1, 5 ]
arr3 = arr.splice(2, 1, '666') //改
// arr3 [ 3 ]
// arr [ 1, 2, '666', 4, 5 ]
arr.slice()
返回数组指定开始和结束下标(左闭右开同py)的项组成的数组,原数组不变
javascript
arr = [0, 1, 2, 3, 4, 5, 6]
arr1 = arr.slice(2) //[ 2, 3, 4, 5, 6 ]
arr2 = arr.slice(2, 5) //[ 2, 3, 4 ]
arr3 = arr.slice(2, -3) //[ 2, 3 ]
arr.sort()
按照ASCII码从小到大排序,返回排序后的数组,原数组排序也改变
javascript
arr = [1, 22, 131, 45, 256]
arr1 = arr.sort()
// arr1 [1, 131, 22, 256, 45]
// 先转换成字符串之后按照ASCII码进行排序
function sortNum(a, b) {
return a - b
}
arr1 = arr.sort(sortNum) //[ 1, 22, 45, 131, 256 ]
// 可参考:https://www.w3school.com.cn/js/jsref_sort.asp
arr.reverse()
反转数组顺序,返回新数组,原数组顺序也改变
arr.indexOf()
查找某字符(数字)第一次出现的索引位置,未查找到返回-1
javascript
arr = [10, 5, 4, 2, 5, 3, 4, 10, 4]
index = arr.indexOf(4) //2
index = arr.indexOf(4, 3) //6 从下标3位置开始查找
index = arr.lastIndexOf(4) //8 查找最后一次出现的位置
index = arr.lastIndexOf(4, 3) //2 从下标3位置开始倒着查找
arr.find()
遍历元素返回第一个符合要求的元素,未找到则返回undefined
javascript
arr = [1, 22, 131, 45, 256]
num = arr.find((n) => n > 100) //131
index = arr.findIndex((n) => n > 100) //2 返回下标,未找到返回-1
goods = { name: "aaa", value: 131 }
function match(v) {
return v == this.value
}
index = arr.findIndex(match, goods) //2 第二个参数可绑定回调函数的this
arr.fill()
使用指定值填充数组,原数组改变
javascript
arr = [1, 22, 131, 45, 256]
arr.fill(6) //[ 6, 6, 6, 6, 6 ]
arr.fill(6,1,4) //[ 1, 6, 6, 6, 256 ] 可指定填充的起始和结束位置