-
访问数组
-
数组中包含对象元素、函数、数组:
-
使用数组对象预定义属性和方法:
-
Array 对象
-
-
- 数组属性
-
-
Array 对象方法
-
-
-
- 查询数组中 是否存储了某一个数值【indexOf】【lastIndexOf】
-
-
-
将数组存储的数值 按照大小顺序进行排列【sort】
-
数组 和 字符串 的相互转化【join】【split】
-
删除数组中指定的数据单元【splice】
-
新增 【unshift】【push】 删除【shift】【pop】
-
数组的反转【reverse】
-
数组的拼接【concat】
-
数组的截取【slice】
====================================================================
数组对象是使用单独的变量名来存储一系列的值。
如果你有一组数据(例如:车名字),存在单独变量如下所示:
var car1=“Saab”;
var car2=“Volvo”;
var car3=“BMW”;
如果你想从很多数据中找出想要的数据,最好的方法就是用数组。
数组可以用一个变量名存储所有的值,并且可以用变量名访问任何一个值。
数组中的每个元素都有自己的的ID,以便它可以很容易地被访问到。
创建一个数组
创建一个数组,有三种方法。
下面的代码定义了一个名为 myCars的数组对象:
1: 常规方式:
var myCars=new Array();
myCars[0]=“Saab”;
myCars[1]=“Volvo”;
myCars[2]=“BMW”;
2: 构造函数语法
var 变量 = new Array();
var myCars=new Array(“Saab”,“Volvo”,“BMW”);
3: 常用语法 字面量
var 变量 = [ 数据1 , 数据2 , 数据3 … ];
在 [ ] 中 定义 要存储的多个数据
每个数据之间使用 逗号 间隔
var myCars=[“Saab”,“Volvo”,“BMW”];
访问数组
通过指定数组名以及索引,可以访问某个特定的元素。(第一个元素索引是从 0 开始)
//可以访问myCars数组的第一个值:
var name=myCars[0];
//修改了数组 myCars 的第一个元素:
myCars[0]=“Opel”;
数组中包含对象元素、函数、数组:
myArray[0]=Date.now;
myArray[1]=myFunction;
myArray[2]=myCars;
使用数组对象预定义属性和方法:
var x=myCars.length // myCars 中元素的数量
var y=myCars.indexOf(“Volvo”) // “Volvo” 值的索引值
======================================================================
Array 对象用于在变量中存储多个值:
var cars = [“Saab”, “Volvo”, “BMW”];
数组属性
| 属性 | 描述 |
| — | — |
| constructor | 返回创建数组对象的原型函数。 |
| length | 设置或返回数组元素的个数。 |
| prototype | 允许你向数组对象添加属性或方法。主要作用:对数组进行扩展
|
1.length
每一个数组,天生就有 length 属性 表示数组长度 也就是 数组单元个数
调用方式 数组.length
最后一个单元的索引下标是数组.length-1
//需要注意的是,直接给数组的 length 赋一个新的值会导致数组大小的变化:
var arr = [1, 2, 3];
arr.length; // 3
arr.length = 6;
arr; // arr 加长为 [1, 2, 3, undefined, undefined, undefined]
arr.length = 2;
arr; // arr 缩短为 [1, 2]
//数组可以通过索引把对应的元素修改为新的值。
//如果通过索引赋值时,索引超过了范围,同样会引起数组大小的变化:
var arr = [1, 2, 3];
arr[5] = “x”;
arr; // arr 变为 [1, 2, 3, undefined, undefined, “x”]
数组的修改和新增
数组的修改:
数组[索引下标] = 数值
本质上 是 对 数组单元 重新赋值
后赋值的数据覆盖之前的数据
效果就是修改数组单元存储的数据
数组的新增:
数组[索引下标] = 数值
本质上 是 对 没有的索引下标赋值
也就是 新增一个数组单元 存储数据
同时 人为的定义数组单元的索引下标
新增数组单元的索引下标必须连续
原始数组 最后一个索引下标是 数组.length-1
新增数组单元的索引下标是 数组.length-1+1
也就是 数组.length
var arr = [1,2,3,4,5];
// 将3 修改为 ‘北京’
// 也就是对 存储3的 单元 重新 赋值 字符串’北京’
// 也就是对 索引下标是 2的单元重新赋值 字符串’北京
// 已有的单元,索引下标是修改
arr[2] = ‘北京’;
// 没有的单元 是 新增
arr[5] = ‘新增’;
//
arr[arr.length] = ‘新增’;
console.log(arr); //控制台输出如下
//Array(7)
//0: 1
//1: 2
//2: “北京”
//3: 4
//4: 5
//5: “新增”
//6: “新增”
//length: 7
2.prototype 返回对象类型原型的引用 (主要作用:对数组进行扩展)
//向数组中添加 max 方法, 使得数组可以使用 max() 取得 最大值
function max() {
var ele = this[0];
for(var i = 0; i < this.length-1; i++) {
ele = this[i] > this[i+1] ? this[i] : this[i+1];
}
return ele;
}
Array.prototype.max = max;
[1,2,5,4,6].max() // 6
Array 对象方法
| 方法 | 描述 |
| — | — |
| concat() | 连接两个或更多的数组,并返回结果。 |
| copyWithin() | 从数组的指定位置拷贝元素到数组的另一个指定位置中。 |
| entries() | 返回数组的可迭代对象。 |
| every() | 检测数值元素的每个元素是否都符合条件。 |
| fill() | 使用一个固定值来填充数组。 |
| filter() | 检测数值元素,并返回符合条件所有元素的数组。 |
| find() | 返回符合传入测试(函数)条件的数组元素。 |
| findIndex() | 返回符合传入测试(函数)条件的数组元素索引。 |
| forEach() | 数组每个元素都执行一次回调函数。 |
| from() | 通过给定的对象中创建一个数组。 |
| includes() | 判断一个数组是否包含一个指定的值。 |
| indexOf() | 搜索数组中的元素,并返回它所在的位置。 |
| isArray() | 判断对象是否为数组。 |
| join() | 把数组的所有元素放入一个字符串。 |
| keys() | 返回数组的可迭代对象,包含原始数组的键(key)。 |
| lastIndexOf() | 搜索数组中的元素,并返回它最后出现的位置。 |
| map() | 通过指定函数处理数组的每个元素,并返回处理后的数组。 |
| pop() | 删除数组的最后一个元素并返回删除的元素。 |
| push() | 向数组的末尾添加一个或更多元素,并返回新的长度。 |
| reduce() | 将数组元素计算为一个值(从左到右)。 |
| reduceRight() | 将数组元素计算为一个值(从右到左)。 |
| reverse() | 反转数组的元素顺序。 |
| shift() | 删除并返回数组的第一个元素。 |
| slice() | 选取数组的一部分,并返回一个新数组。 |
| some() | 检测数组元素中是否有元素符合指定条件。 |
| sort() | 对数组的元素进行排序。 |
| splice() | 从数组中添加或删除元素。 |
| toString() | 把数组转换为字符串,并返回结果。 |
| unshift() | 向数组的开头添加一个或更多元素,并返回新的长度。 |
| valueOf() | 返回数组对象的原始值。 |
查询数组中 是否存储了某一个数值【indexOf】【lastIndexOf】
数组.indexOf()
查询匹配数据 第一次出现的位置
如果 有 匹配数据 返回值 是 存储这个数据单元的索引下标
如果没有 匹配数据 返回结果是 -1
数组.lastIndexOf()
查询匹配数据 最后一次出现的位置
如果 有 匹配数据 返回值 是 存储这个数据单元的索引下标
如果没有 匹配数据 返回结果是 -1
var arr = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
console.log(arr); //控制台 输出 Array(15)
// 查找 3 第一次出现的位置 返回的是 第一个3 存储单元的 索引下标
console.log( arr.indexOf( 3 ) ); // 2
// 查找 3 最后一次出现的位置 返回的是 最后一个3 存储单元的 索引下标
console.log( arr.lastIndexOf( 3 ) ); // 12
// 如果没有匹配的数据 返回结果是 -1
// 查找匹配 执行的是 严格比较/全等判断 ===
console.log( arr.lastIndexOf( ‘3’ ) ); // -1
将数组存储的数值 按照大小顺序进行排列【sort】
数组.sort()
默认 按照首字符 数值大小顺序 进行排序
首字符相同情况 按照 之后的 字符 依次排序
不是按照实际数值大小进行排序
数组.sort(function(a,b){return a-b});
按照数值大小 从 小 至 大 排续
sort() 中 定义的 参数是 一个 匿名函数
匿名函数 还要定义两个参数 两个参数名称可以任意定义
匿名函数 的返回值 return 是 参数1 - 参数2
数组.sort(function(a,b){return b-a});
按照数值大小 从 大 至 小 排续
sort() 中 定义的 参数是 一个 匿名函数
匿名函数 还要定义两个参数 两个参数名称可以任意定义
匿名函数 的返回值 return 是 参数2 - 参数1
一般只对 存储 数值的数组 进行排序
var arr = [312,6543435,432,543,956354,453,56,87,65,75436,345,423,4,32,54,88765,7654,74321,4543];
// 默认按照 首字符大小顺序排序
arr.sort();
console.log( arr );
var arr1 = [312,6543435,432,543,956354,453,56,87,65,75436,345,423,4,32,54,88765,7654,74321,4543]
// 按照数值大小 从 小 至 大 排序
arr1.sort(function(min,max){return min-max});
console.log( arr1 );
var arr2 = [312,6543435,432,543,956354,453,56,87,65,75436,345,423,4,32,54,88765,7654,74321,4543]
// 按照数值大小 从 大 至 小 排序
arr2.sort(function(min,max){return max-min});
console.log( arr2 );
数组 和 字符串 的相互转化【join】【split】
数组.join()
获取数组单元存储的数据 拼接转化为 字符串
默认获取数组单元存储的数据 以 逗号 为间隔 拼接为 字符串
在 join() 中 可以定义 间隔符号
如果不需要间隔符号 在 join() 中 设定 空字符串
字符串.split()
将 字符串 分割为 数组
默认是将 字符串作为一个整体 转化为 数组单元
在 () 中 可以设定 分割字符串的 间隔符号
分割的数据单元 没有 间隔符号
如果没有 间隔符号 还希望 将每一个字符分割为 一个 数据单元 间隔符号可以设定为 空字符串
屏蔽文章内容中的关键词
var arr1 = [1,2,3,4,5];
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
更多面试题
**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等
力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-AUypFTuc-1713498356487)]
[外链图片转存中…(img-5iNqdfOx-1713498356488)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
[外链图片转存中…(img-USror2L4-1713498356488)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
[外链图片转存中…(img-156m7zap-1713498356489)]
更多面试题
**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等
[外链图片转存中…(img-w0n90k8D-1713498356489)]