一.数组
数组的概念
就是一组数据,1>元素可以是任意类型 2>数组可以动态扩容
创建数组
1.1> var arr = new Array(10) // 1个数值参数,表示数组长度
1.2> var arr = new Array(10, 1) // 2个参数,表示元素10,1
2> var arr = [] // 字面量创建数组
3> var arr = Array(3) // 同new Array(), 不推荐省略new
访问数组
arr[0] // 表示数组第一个元素 通过下标取值 通过赋值修改元素
数组长度
arr.length // 获取数组长度 可以通过设置length改变数组长度 超出长度的元素会被删除
arr.length-1 // 表示数组最后一个元素 因为数组下标从0开始
二.数组方法
方法名 方法参数 方法作用 方法返回值
数组增删改查
// 静态方法Array.isArray(arr) 判断是不是数组 返回bool
Array.isArray(arr)
// push(arg) 接收任意数量参数 往数组末尾添加元素 返回数组新长度
arr.push()
// pop() 无参数 移除数组末尾1个元素,减少数组长度 返回移除的元素
arr.pop()
// unshift(arg) 接收任意数量参数 往数组开头添加元素 返回数组新长度
arr.unshift()
// shift() 无参数 移除数组开头1个元素,减少数组长度 返回移除的元素
arr.shift()
// splice() 2个参数 删除元素 返回被删的元素
// 3个参数,第2个是0 插入元素 返回空数组
// 3个参数,第2个是1+以上 替换元素 返回被替换的元素
arr.splice()
// indexOf() 2个参数,匹配元素,从哪个下标开始找 返回第一个匹配元素的下标 找到返回下标,找不到返回-1
arr.indexOf()
// delete(arr[i]) 数组[下标] 删除元素,不改变length,使用undefined占位 返回true
delete(arr[i]) // 不是数组方法
数组排序
// sort() 回调函数 默认按ASCII码升序只比较第1位 返回排序好的数组
arr.sort()
arr.sort(fn)
var arr = [1, 6, 3, 5]
arr.sort(function () {
return a - b; // 升序 b-a 降序
})
// reverse() 无参数 倒序排序数组 返回排序好的数组
arr.reverse()
生成副本 不修改原数组
// slice(i,) 1个下标 截取从下标开始到最后一个元素 返回截取的数组副本
// slice(i, j) 2个下标 截取从i到j-1的元素 返回截取的数组副本
arr.slice()
// concat(arg) 接收任意参数元素或数组 合并成一个数组副本 返回数组副本
arr.concat(arr1)
// arr.join(',') 默认用','隔开,也可以指定参数隔开 将数组元素合并成字符串 返回字符串
arr.join('-')
遍历数组
// 只遍历有内容的元素
for (var i in arr) {
arr[key];
}
// arr.forEach(fn) 回调函数 遍历,不能被关键字打断 没有返回值
arr.forEach(function(item, index, arr) {
})
// arr.map(fn) 回调函数 遍历 返回数组,根据回调函数(作为参数传递的函数)决定
// arr.sonme(fn) 回调函数 遍历 有1个成员满足条件返回true
// arr.every(fn) 回调函数 遍历 所有成员满足条件返回true
// arr.filter(fn) 回调函数 遍历 根据满足的条件,返回1个数组副本
// arr.reduce() 2个参数,1个回调函数,第2个初始值pre
arr.reduce(function(pre上一次调用返回的值, cur当前处理的元素, index, arr) {
}, pre) // 如果没有pre会取arr[0]
原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/268049.html