今天梳理一下有关数组的知识点:
var arr = [1, 2, 3, 4] // demo
1、pop —— 删除数组最后一个元素,原数组改变
n = arr.pop() // 4
console.log(arr) // [1, 2, 3]
2、push —— 数组末尾加入一个元素,原数组改变
arr.push(5) // [1, 2, 3, 4, 5]
3、unshift —— 数组头部加入一个元素, 原数组改变
arr.unshift(1) // [1, 1, 2, 3, 4]
4、 shift —— 数组头部删除第一个元素, 原数组改变
var n = arr.shift() // 1
console.log(arr) // [2, 3, 4]
5、reserve —— 反向排序, 原数组改变
arr.reverse() // [4, 3, 2, 1]
6、sort —— 数组排序
var arr = [3,32,1,5,6,4,3]
arr.sort() // [1, 3, 32, 4, 5, 6]
这里的排序并没有按照数值大小去排序,而是根据字符编码的顺序进行排序的,可以使用一个排序函数来排序:
function sortNum (a, b) {
return a -b
}
arr.sort(sortNum) // [1, 3, 3, 4, 5, 6, 32]
7、 indexOf
从头部开始查找符合的元素,只要找到一个就停止查找,返回下标,未找到返回-1
var arr = [1,2,3,2]
arr.indexOf(2) // 1
arr.indexOf(6) // -1
8、lastIndexOf
从尾部开始查找符合的元素,只要找到一个就停止查找,返回下标,未找到返回-1
var arr = [1,2,3,2]
arr.lastIndexOf(2) // 3
arr.lastIndexOf(6) // -1
9、forEach —— 数组遍历
var arr = ['a', 'b', 'c']
arr.forEach((item, index, arr) {
console.log(item, index)
})
// a,0
b,1
c,2
forEach遍历和for循环遍历效果是一样的
10、for in
遍历是数组的索引,既键名
可以遍历数组,也可以遍历对象,不推荐使用 for in 遍历数组,因为遍历的顺序可能不是数组内部实际的顺序,推荐遍历对象
var arr = ["a", "b", "c", 4]
for (var key in arr) {
console.log(key, arr[key]) // 0,a 1,b 2,c 3,4
}
11.for of
遍历的是数组的值
var arr = ["a", "b", "c", 4]
for (var v of arr) {v
console.log(v) // "a" "b" "c" "4"
}
12、map
操作数组的每一个元素,返回一个新的数组
var arr = [1, 2, 3, "",4]
var _arr = arr.map(item => {
return item * 2
})
console.log(_arr) // [2,3,6,0,8]
注意,这里空元素返回的是 0
如果是数值比较则是返回Boolean值
var _arr = arr.map(item => {
return item > 2
})
console.log(_arr) // [false, false, true, false, true]
注意,这里空元素返回的是 false
13、filter —— 过滤
遍历数组每一元素,过滤出符合要求的元素,返回一个新的数组
var _arr = arr.filter(item => {
return item > 2
})
console.log(_arr) // [3, 4]
14、some —— 遍历数组的每一个元素,只要有一个元素符合条件,就返回true,都不满足则返回false
arr.some(item => {
return item > 2
})
// true
arr.some(item => {
return item > 20
})
// false
15、every —— 遍历数组每一元素,都满足则返回true,只要有一个元素不满足则返回false
var arr = [1, 2, 3, "", 4]
arr.every(item => {
return item > -1
})
// true 这里空值默认为0
arr.every(item => {
return item >1
})
// false
以上即是我对js数组相关知识的整理,不足之处欢迎指正!