Skip to content

数组操作

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 ] 可指定填充的起始和结束位置