重学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对象中的属性名必须是字符 ...
随机推荐
- PHP一些常用的正则表达式分享给大家
一.校验数字的表达式 1 数字:^[0-9]*$2 n位的数字:^\d{n}$3 至少n位的数字:^\d{n,}$4 m-n位的数字:^\d{m,n}$5 零和非零开头的数字:^(0|[1-9][0- ...
- 【wif系列】C#之单例模式(Singleton Pattern)最佳实践
目录 前言 单例基类 单例提供者 总结 前言 在上一篇译文--<深入理解C#--在C#中实现单例模式>中,对在C#中实现单例模式进行了详细阐述.我们在日常的开发中可以采用解决方案4或解决方 ...
- 47.Odoo产品分析 (五) – 定制板块(2) – 为业务自定义odoo(2)
查看Odoo产品分析系列--目录 Odoo产品分析 (五) – 定制板块(2) – 为业务自定义odoo(1) 4 添加自定义字段 定制odoo的最普通的原因就是指定到公司的附加信息.如果您正在运行一 ...
- MySQL:select command denied to user for table 'proc'案例
使用EMS MySQL Manager Pro(3.4.0.1)连接MySQL 5.6.20时,报错:"SELECT command denied to user xxx@xxx.xxx.x ...
- 猴子吃桃儿问题(C#)
猴子第一天摘了许多个桃子,先吃了所有桃子的一半,后又吃了一个:第二天又吃了剩下桃子的一半,后又吃了一个……第十天,剩1个桃子.问:猴子第一天摘了多少个桃子? 本程序对其做了修改,天数和吃一半后又吃了一 ...
- js坚持不懈之17:onmousedown、onmouseup 以及 onclick 事件
<!DOCTYPE html> <html> <body> <div onmouseover = "mOver(this)" onmous ...
- 关于Http
摘自:菜鸟教程 HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(www)服务器传输超文本到本地浏览器的传送协议. HTTP ...
- MyCP(课下作业)
一.作业要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内 ...
- Elastic Stack-Elasticsearch使用介绍(五)
一.前言 前4篇将Elasticsearch用法的API和原理方面东西介绍了一下,相信大家对Elasticsearch有了一定的认知,接下我们主要从索引的建立到后期的一些优化做一些介绍: 二. ...
- Nonlinear Component Analysis as a Kernel Eigenvalue Problem
目录 引 kernel PCA kernel 的选择 性质 一些问题 代码 Scholkopf B, Smola A J, Muller K, et al. Nonlinear component a ...