重学JavaScript - 数组
作者:狐狸家的鱼
GitHub:surRimn
整理自MDN文档
数组
数组是一种类列表对象,长度和元素类型不固定。
描述
访问数组
JavaScript
数组的索引是从0开始的,第一个元素的索引为0,最后一个为数组长度减一。
如果指定的索引是一个无效值,不会报错,而是返回undefined
。
以数字开头的属性不能用点号引用,必须用方括号。
正则匹配结果所返回的数组
RegExp.exec
、String.match
、String.replace
都会返回这样的数组。
属性
Array.length
:Array
构造函数的length
属性,其值为1get Array[]
:返回Array
构造函数Array.prototype
:通过数组的原型对象可以为所有的数组对象添加属性
方法
Array.from()
:从类数据对象或者迭代对象中创建一个新的数组实例Array.isArrau()
:判断某个变量是否是一个数组对象Array.of()
:根据一组参数来创建新的数组实例,支持任意的参数数量和类型
数组实例
所有数组实例都会从Array,prototypr
继承属性和方法。修改Array
的原型会影响到所有的数组实例。
属性
Array.prototype.constructor
:所有的数组实例都继承了这个属性,它的值就是Array
,表面了所有的数组都是由Array
构造出来的 Array.prototype.length
:这个值为 0,因为它是个空数组
方法
- 修改器方法: 会改变调用它们的对象自身的值
- 访问方法:绝对不会改变调用它们的对象的值,只会返回一个新的数组或者返回一个其它的期望值。
- 迭代方法:数组遍历,不要尝试在遍历过程中对原数组进行任何修改
修改器方法 | 含义 |
---|---|
Array.prototype.pop() |
在数组内部,将元素序列拷贝到另一端元素序列上,覆盖原有的值 |
Array.prototype.push() |
在数组的末尾增加一个或多个元素,并返回数组的新长度 |
Array.prototype.reverse() |
颠倒数组中元素的排列顺序,即原先的第一个变为最后一个,原先的最后一个变为第一个 |
Array.prototype.shift() |
删除数组的第一个元素,并返回这个元素 |
Array.prototype.sort() |
对数组元素进行排序,并返回当前数组 |
Array.prototype.splice() |
在任意的位置给数组添加或删除任意个元素 |
Array.prototype.unshift() |
在数组的开头增加一个或多个元素,并返回数组的新长度 |
访问方法 | 含义 |
---|---|
Array.prototype.concat() |
返回一个由当前数组和其它若干个数组或者若干个非数组值组合而成的新数组 |
Array.prototype.join() |
连接所有数组元素组成一个字符串 |
Array.prototype.slice() |
抽取当前数组中的一段元素组合成一个新数组 |
Array.prototype.toString() |
返回一个由所有数组元素组合而成的字符串。遮蔽了原型链上的 Object.prototype.toString() 方法 |
Array.prototype.toLocaleString() |
返回一个由所有数组元素组合而成的本地化后的字符串。遮蔽了原型链上的 Object.prototype.toLocaleString() 方法 |
Array.prototype.indexOf() |
返回数组中第一个与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1 |
Array.prototype.lastIndexOf() |
返回数组中最后一个(从右边数第一个)与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1 |
迭代方法 | 含义 |
---|---|
Array.prototype.forEach() |
为数组中的每个元素执行一次回调函数 |
Array.prototype.every() |
如果数组中的每个元素都满足测试函数,则返回 true ,否则返回 false |
Array.prototype.some() |
如果数组中至少有一个元素满足测试函数,则返回 true ,否则返回 false |
Array.prototype.filter() |
将所有在过滤函数中返回 true 的数组元素放进一个新数组中并返回 |
Array.prototype.map() |
返回一个由回调函数的返回值组成的新数组 |
Array.prototype.reduce() |
从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值 |
Array.prototype.reduceRight() |
从右到左为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值 |
示例简单列表
创建数组
let person = [1, 2, 3];
通过索引访问数组元素
let first = person[0];//
let last = person[person.length - 1];//
遍历数组
person.forEach((item, index, array) => { })
添加元素到数组的末尾
let new = person.push(4);//[1, 2, 3, 4]
删除数组末尾的元素
person.pop();//[1, 2, 3]
删除数组最前面(头部)元素
person.shift();//[2, 3]
添加元素到数组的头部
person.unshift(1);//[1, 2, 3]
找出某个元素在数组中的索引
person.indexOf(1);//
通过索引删除某个元素
第一个参数代表开始索引位置,第二个参数代表个数
person.splice(1, 1);//[1, 3, 4]
从一个索引位置删除多个元素
person.splice(0, 2);//[4]
复制一个数组
let newPerson = person.slice();
重学JavaScript - 数组的更多相关文章
- 2.重学javascript 对象和数组
什么是对象,其实就是一种类型,即引用类型. 一.创建Object类型有两种. ①使用new运算符 <script type="text/javascript"> var ...
- 1.重学javascript (一)
一.script标签解析 <script>xxx</script>这组标签,是用于在html 页面中插入js的主要方法.它主要有以下 几个属性: 1.charset:可选.表示 ...
- 重学JavaScript - 映射与集合
作者:狐狸家的鱼 GitHub:surRimn 整理自MDN文档 带键的集合 映射 Map对象 一个Map对象在迭代时会根据对象中元素的插入顺序来进行 — 一个 for...of 循环在每次迭代后会返 ...
- 复习 Array,重学 JavaScript
1 数组与对象 在 JavaScript 中,一个对象的键只能有两种类型:string 和 symbol.下文只考虑键为字符串的情况. 1.1 创建对象 在创建对象时,若对象的键为数字,或者由 字母+ ...
- 重学JavaScript之面向对象的程序设计(继承)
1. 继承 ES 中只支持实现继承,而且其实现继承主要依靠原型链来实现的. 2. 原型链 ES中 描述了 原型链的概念,并将原型链作为实现继承的主要方法.其基本思想是利用原型让一个引用类型继承另一个引 ...
- 重学JavaScript之匿名函数
1. 什么是匿名函数? 匿名函数就是没有名字的函数,有时候也称为< 拉姆达函数>.匿名函数是一种强大的令人难以置信的工具.如下: function a(a1, a2, a3) { // 函 ...
- 重学js之JavaScript 面向对象的程序设计(创建对象)
注意: 本文章为 <重学js之JavaScript高级程序设计>系列第五章[JavaScript引用类型]. 关于<重学js之JavaScript高级程序设计>是重新回顾js基 ...
- 【跟着大佬学JavaScript】之数组去重(结果对比)
前言 数组去重在面试和工作中都是比较容易见到的问题. 这篇文章主要是来测试多个方法,对下面这个数组的去重结果进行分析讨论.如果有不对的地方,还请大家指出. const arr = [ 1, 1, &q ...
- 【从0到1学javascript】javascript数据结构----数组
javascript中对数组的定义 数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可以是整数.这些数字索引在内部被转换成字符串类型.这是因为javascript对象中的属性名必须是字符 ...
随机推荐
- Dynamics 365-关于Activity定制的一个细节
有一个需求,是Lead上的activity创建的时候,更新regarding Entity上的某个字段信息.需求很简单,写个plugin,注册到对应activity的create事件上,Over... ...
- C# CAD批量转换为图片
最近写了个工具,将指定目录下的CAD文件批量转换为图片格式. 首先需要添加对应的引用 : 在AutoCAD2008的环境下对应AutoCAD 2008 Type Library 和 AutoCAD/O ...
- 【Android】用Cubism 2制作自己的Live2D——android sdk样本的下载与Android studio编译!
前言- 在浏览Live2d说明书的时候我无意中发现了一个有趣的东西,就是android sdk中居然自带动态壁纸!那就让我们来试试吧,说明书此页的网址连接——中文版||日文版 Android开发所必需 ...
- Android Studio工程项目打包成SDK(jar或aar格式)
Android工程项目打包成SDK 在app的gradle下进行设置: (1)将apply plugin: ‘com.android.application’ 改为apply plugin: ‘com ...
- Tableau环图可视化
1.选择"记录数",拖拽两个记录数放入列中,求总和,选择饼图: 2.选择"大小",调整两个饼图的大小: 3.点击第二个总和(行上的),选择“双轴”: 4.点击坐 ...
- hbase rowkey 的设计
什么是rowkey Hbase是一个分布式的.面向列的数据库,它和一般关系型数据库的最大区别是:HBase很适合于存储非结构化的数据,还有就是它基于列的而不是基于行的模式. Hbase是采用K,V存储 ...
- mysql基本操作(1)
1.mysql数据库客户端安装 brew install mysql-client 2.mysql 连接数据库 mysql -h <数据库地址> -P <端口> -u < ...
- Linux学习历程——Centos 7 chmod命令
一.命令介绍 chmod 命令,是Linux管理员最常用的命令之一,用于修改文件或目录的访问权限. Linux系统中,每一个文件都有文件所有者和所属群组,并且规定文件的所有者,所属群组,以及其他人队问 ...
- JToken和BsonValue对象的相互转换
/// <summary> /// JObject和BsonValue之间的 /// </summary> public static class AdapterExtensi ...
- C#中的out 参数,ref参数,值参数
大家可能在编码中或多或少的使用过out的ref,但是是否注意过他两的详细用法以及区别? 本文想介绍下详细介绍下out参数,ref参数以及一般值参数. 值参数 在使用参数时,把一个值传递给函数使用的一个 ...