数组对象
一种特殊的对象
JS 其实没有真正的数组
- 只是用对象模拟数组
JS 的数组不是典型数组
- 典型的数组
- 元素的数据类型相同
- 使用连续的内存存储
- 通过数字下标获取元素

- 但是 JS 的数组不这样
- 元素的数据类型可以不同
- 内存不一定是连续的(对象是随机存储的)
- 不能通过数字下标,而是通过字符串下标
- 这意味着数组可以有任何 key
- 比如
let arr = [1,2,3]arr['xxx'] = 1- 完全合法

创建一个数组
- 新建
- 转化
- 伪数组
伪数组的原型链中并没有数组的原型,直接指到了根对象
- 没有
push或者pop等数组共有的属性,那就是伪数组 - 没有数组共用属性的【数组】,就是伪数组
创建一个数组(续)
- 合并两个数组,得到新数组
- 截取一个数组的一部分
增删改查 数组中的元素
- 删元素
- 跟对象一样
- 稀疏数组
- 如果改 length 可以删元素吗?
- 重要:不要随便改 length
- 删元素续
- 删除头部的元素
- 删除尾部的元素
- 删除中间的元素
查看所有元素
- 查看所有属性名
- 查看数字(字符串)属性名和值
- 你要自己让
i从0增长到length -1
- 也可以用
forEach/map等原型上的函数
forEach 是一个坎
- 自己写 forEach 才能理解 forEach
forEach用for访问array 的每一项- 对每一项调用
fn(array[i], i, array) - 为什么要传入
array呢? 不为什么,规定如此。
查看单个属性
- 跟对象一样
- 索引越界
- 举例

查看单个元素(续)
- 查找某个元素是否在数组里
- 使用条件查找元素
- 使用条件查找元素的索引
增加数组中的元素
- 在尾部加元素
- 在头部加元素
- 在中间添加元素
修改数字中的元素
- 修改就正常修改就行了
- 反转顺序
- 自定义顺序
数组变换

数字变换(续)
map- n 变 n
filter- n 变少
reduce- n 变 1
| 参数 | 描述 |
|---|---|
| total | 必需。初始值, 或者计算结束后的返回值。 |
| currentValue | 必需。当前元素 |
| currentIndex | 可选。当前元素的索引 |
| arr | 可选。当前元素所属的数组对象。 |
题目
- 第一题
- 把数字变成星期
- 第二题
- 找出所有大于60分的成绩
- 第三题
- 算出所有数字之和
面试题
- 数据变换
答案
资料来源:饥人谷。任何组织或个人未经许可,禁止转载
评论






