文章目录
创建数组
使用 Array
构造函数:
var x = new Array() // new 关键字可以省略~
var y = Array(20) // length = 20
var z = Array(1, 2, "张三", "李四", "小明") // 可以混合类型 👍
数组 字面量
表示法:
var hello = ["小帅", "小美", "金发妹", "大壮"] // length = 4
var world = [] // length = 0
操作数组
检测是不是数组
users instanceof Array
users.isArray() // 更推荐
把数组转成字符串 (打印出数组)
一般情况用:
var x = users.toString()
// 或
var y = users.valueOf()
// 或
console.log(users)
此时输出为:1, 2, "小帅", true
,但我要是想输出别的呢,比如:1 😅 2 😅 小帅 😅 true
,那就用:
console.log(users.join('😅'))
操作第一个和最后一个元素 (前后端)
相信你一定非常熟悉 队列
和 栈
的操作了,见下:
var x = ['old8', 1, 2]
x.push(3) // 最后面加一个
var tail = x.pop() // 把最后一个取出来, 所以 end = 3
x.unshift("player", "ddd") // 最前面加两个
var head = x.shift() // 把第一个取出来, 所以 head = "player"
数组排序、反转方法
users.reverse() // 把数组反过来
users.sort() // 用js方法排序
如果我想自定义排序规则怎么办呢?如下:
judge (a, b) {
if ( a < b ) {
return -1 // 不换
} else if ( a > b ) {
return 1 // 换
} else if ( a == b ) {
return 0 // 不管
}
}
// 传入 judge 函数即可, 这里的 judge 函数有很多优秀的写法, 在这里就不一一探讨了 👍
users.sort(judge)
用 splice 方法删除、插入、替换
var x = [1, 2, 3]
x.splice(0, 1) // 从下标0开始, 删除1项, 现在 x = [2, 3]
x.splice(1, 0, 'n', 'p') // 从下标1开始, 插入2项, 现在 x = [2, 'n', 'p', 3]
x.splice(1, 1, 'yellow', 'blue') // 从下标1开始, 删除1项, 插入2项, 现在 x = [2, 'yellow', 'blue', 'p', 3]
用 indexOf 搜索数组中的元素
var firstXiaoShuai = x.indexOf("小帅") // 从前面开始找, 找到小帅时返回其索引
var lastXiaoShuai = x.lastIndexOf("小帅") // 从后面开始找小帅
迭代数组
使用 every 和 some 查询数组
使用 every
判断是否数组中每一项都满足条件
function judge(item, index, array){
return (item > 2)
}
var allBig = values.every(judge)
使用 some
判断是否数组中 有满足条件的项
function judge(item, index, array){
return (item > 2)
}
var hasBig = values.some(judge)
使用 filter 提炼筛选数组 👍
使用 filter
把数组中 满足条件的项
提取到一个新数组,比如下面的代码可以筛选出数组中所有 > 0
的数:
function lambda(item, index, array){
return (item > 0)
}
var posArray = values.filter(lambda)
使用 forEach 来遍历数组 👍
使用 forEach
可以遍历数组, 并且不修改数组中的元素内容:
function lambda(item, index, array){
console.log(item)
}
var afterArray = values.forEach(lambda)
使用 map 获得遍历操作后的数组
使用 map
可以返回遍历操作一遍后
的结果数组,比如下面的代码可以让数组里所有元素 乘以 2
,并且不改变原来的数组:
function lambda(item, index, array){
return item * 2
}
var afterArray = values.map(lambda)