1. 数组的概念
- 存储一组有序的数据,数据类型可以不一样
数组的作用:一次性存储多个数据数组元素:数组中存储的每个数据,叫数组元素,存储了5个数据,有5个数组元素数组的长度:数组的元素的个数,叫数组的长度(数组名.length),数组的长度是可以改变的索引(下标):存储数组元素的编号,从0开始,到数组的长度-1结束,索引是用来存储和读取数组元素的遍历数组:通过循环的方式找到数组中的每个数据- 数组
Array是内置对象
2. 数组的定义方式
- 通过构造函数定义数组
var arr = new Array()
var arr = new Array(5)
var arr = new Array(3, 6)
- 数组字面量方式定义数组(推荐)
var 数组名 = []
var 数组名 = [1, 2, 3, 4]
3. Array数组静态方法
《静态方法》| 序号 | 静态方法 | 参数 | 描述 | 返回值 |
|---|
| 1(H5新增)(响应式) | Array.isArray(对象) | 对象 | 判断这个对象是不是数组 | 布尔值 |
| 2(ES6) | Array.from(伪数组) | 伪数组 | 将伪数组变成真数组 | 数组 |
4. Array数组常用的方法
4.1 添加元素方法
《添加元素》| 序号 | 方法 | 参数 | 描述 | 返回值 |
|---|
| 1 (响应式) | .push(值) | 数值、字符串、对象 | 把值追加到数组的最后,多个值则用逗号隔开 | 数组长度 |
| 2 (响应式) | .unshift(值) | 数值、字符串、对象 | 把值追加到数组的最前面,多个值则用逗号隔开 | 数组长度 |
| 3 | .concat(数组,数组,数组,...) | 数组 | 组合成一个新的数组 | 新数组 |
| 4 | .join("字符串") | 字符串 | 往数组中每个元素中间添加字符 | 字符串 |
演示:
var arr = [10, 20]
arr.push(30, 40)
console.log(arr)
var arr = [10, 20]
arr.unshift(30, 40)
console.log(arr)
var arr = [10, 20]
var arr1 = [30, 40]
var arr2 = [50, 60]
arr.concat(arr1, arr2)
console.log(arr)
var arr=["小红","小绿","小白","小兰","小花"];
var t1 = arr.join("|");
console.log(t1)
4.2 删除元素方法
《删除元素》| 序号 | 方法 | 参数 | 描述 | 返回值 |
|---|
| 1 (响应式) | .pop() | 无 | 删除数组中最后一个元素 | 被删除的元素 |
| 2 (响应式) | .shift() | 无 | 删除数组中第一个元素 | 被删除的元素 |
演示:
var arr = [10, 20, 30]
arr.pop()
console.log(arr)
var arr = [10, 20, 30]
arr.shift()
console.log(arr)
4.3 查询元素方法
《查询元素》| 序号 | 方法 | 参数 | 描述 | 返回值 |
|---|
| 1 | .indexOf(元素值) | 数值、字符串、对象 | 查询当前数组中有没有某元素 | 有则此元素索引,无则-1 |
| 2(ES6) | .find(函数) | 函数 | 找出第一个符合条件的数组成员,然后停止函数 | 有则此元素,无则undefined |
| 3(ES6) | .findIndex(函数) | 函数 | 查找第一个符合条件的数组成员,然后结束函数 | 有则此元素索引,无则-1 |
| 4(ES6) | .includes(参数值) | 数值、字符串、对象 | 查询数组中是否有某个给定值 | 布尔值 |
演示:
var arr = [11,55,166,22]
var index = arr.indexOf(55)
console.log(index)
var arr = [10,20,30]
var time = arr.find(function (ele) {
return ele == 30
})
console.log(time)
var arr = [10,20,30]
var index = arr.findIndex(function (ele) {
return ele == 30
})
console.log(index)
var arr = [10,20,30]
ver faly = arr.includes(20)
console.log(faly)
4.4 (替换、删除、插入)元素方法
《替换、删除、插入元素的方法》| 序号 | 方法 | 参数 | 描述 | 返回值 |
|---|
| 1(响应式) | .splice(开始位置,删除个数,替换值) | 数值 | 删除、或者是替换,或者是插入元素 | 被删掉的元素 |
演示:
var arr = ['a', 'b', 'c', 'd']
arr.splice(2, 1)
console.log(arr)
var arr = ['a', 'b', 'c', 'd']
arr.splice(2, 1, 'e')
console.log(arr)
var arr = ['a', 'b', 'c', 'd']
arr.splice(2, 0, 'e', 'f')
console.log(arr)
4.5 截取元素方法
《截取元素的方法》| 序号 | 方法 | 参数 | 描述 | 返回值 |
|---|
| 1 | .slice(开始的索引,结束的索引) | 数值 | 截取元素放在新的数组中,不包含结束索引的元素 | 新数组 |
演示:
let arr1 = [10, 20, 30, 40]
let arr = arr1.slice(0, 2)
console.log(arr)
4.6 反转数组的方法
《反转数组的方法》| 序号 | 方法 | 参数 | 描述 | 返回值 |
|---|
| 1 (响应式) | .reverse() | 无 | 反转数组,元素位置反转 | 无 |
演示:
let arr = [10, 20, 30, 40]
arr.reverse()
console.log(arr)
4.7 数组排序的方法
《数组排序的方法》| 序号 | 方法 | 参数 | 描述 | 返回值 |
|---|
| 1 (响应式) | .sort(函数) | 函数 | 排序的,可能不稳定,如果不稳定,请写以下固定代码 | 无 |
演示:
var arr = [63, 80, 95, 40]
arr.sort(function (a, b) {
return a - b
})
console.log(arr)
sort方法的底层实现:
Array.prototype.sort = function (fn) {
for (var i = 0; i < this.length-1; i++) {
for (var j = 0; j < this.length-1-i; j++) {
var num = fn(this[j], this[j + 1])
if (num > 0) {
var items = this[j]
this[j] = this[j+1]
this[j+1] = items
}
}
}
return this
}
4.8 遍历数组的方法
《遍历数组的方法》| 序号 | 方法 | 参数 | 描述 | 返回值 |
|---|
| 1 | .forEach(函数) | 函数 | 遍历数组用---相当于for循环(低版本浏览器中无法兼容) | 无 |
| 2 | .some(函数) | 函数 | 查找数组中是否有满足条件的元素 | 布尔值 |
| 3 | .every(函数) | 函数 | 判断这个数组中所有元素是否符合条件,空数组调用返回true | 布尔值 |
| 4 | .map(函数) | 函数 | 在函数中处理每个元素,放在新数组中 | 新数组 |
| 5 | .filter(函数) | 函数 | 返回的是数组中每一个都符合条件的元素,放进新数组 | 新数组 |
| 6 | .reduce(函数,初始值) | 函数 | 很适合数组求和 | 函数处理结果 |
演示:
var arr = [10, 20, 40, 60]
arr.forEach(function(ele,index){
console.log(ele+"==="+index)
})
var t1 = [10, 20, 30, 50, 60, 7, 6]
var t2 = t1.some(function (ele,index) {
return ele>10
})
var t1 = [10, 20, 30, 50, 60, 7, 6]
var t2 = t1.every(function (ele,index) {
return ele>10
})
var arr = [1,4,9];
var t1 = []
t1 = arr.map(function(ele){
return ele *2
})
var t1 = [10, 20, 30, 50, 60, 7, 6]
var t2 = []
t2 = t1.filter(function (ele) {
return ele>10
})
let arr = [10, 20, 30, 40, 50]
let sum = arr.reduce(function(preValue,ele){
return preValue + ele
}, 0)
5. 伪数组 arguments
- 当一个函数的参数个数不确定时,可以使用 arguments 来接收参数
arguments 是一个对象(伪数组)arguments 可以获取函数调用的时候,传入的实参的个数arguments.length 是实参的个数arguments[索引] 实参的值- 伪数组转真数组:
[].call(arhuments)
6. 冒泡排序
var arr = [1, 2, 3, 4, 5]
for (var i = 0; i < arr.length-1; i++) {
for (var j = 0; j < arr.length-1-i; j++) {
if (arr[j] < arr[j+1]) {
var temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
}