JavaScript数组
条评论更新说明:对文章排版以及内容格式做了调整。
更新时间:2022-05-04
构造函数Array
- Array是JavaScript的原生对象,同时也是一个构造函数,可以用它生产新的数组,但由于Array作为构造函数的行为不一致,因此不建议使用。
- new Array等同于 Array,加不加new一点影响都没有。
- Array.of()返回由所有参数值组成的数组
- Array.from()将具有iterator接口的对象转为数组
1 | let a = new Array(3); |
静态方法
- Array.isArray()
该方法返回一个布尔值,表示参数是否为数组,以来弥补typeof的不足。
实例方法
valueOf() toString()
- 首先这个valueOf()是所有对象都拥有的方法,表示对该对象求值。然后,这个数组的valueOf方法返回数组本身。
let arr = [1,2,3];
arr.valueOf() //[1,2,3]
- 这个toString()方法也是对象的通用方法,数组的toString()方法返回数组的字符串形式。
arr.toString() // 1,2,3
push() pop()
- push()方法在数组末尾添加一个或多个元素,返回添加元素后数组的长度,会改变原数组。
- pop()方法 删除数组的最后一个元素,返回删除的元素,会改变原数组。
shift() unshift()
- shift()方法 删除数组的第一个元素,返回删除的元素,会改变原数组。
- unshift()方法 在数组的开头添加一个或多个元素,返回添加元素后的数组长度,会改变原数组。
join()
- join()方法以指定的参数作为分隔符,将所有数组成员连接为一个字符串返回,不提供参数,默认以逗号连接。
- 字符串:Array.prototype.join.call(‘hello’,‘-’) => h-e-l-l-o
concat()
concat()方法用于多数组的合并,将新数组的成员,添加到原数组成员的后部,返回一个新数组,原数组成员不变。
除了数组作为参数,也可以接受其它类型的值作为参数。如果参数为对象,那么为浅拷贝:原对象发生改变,新生成的数组对象的值跟着发生改变。
reverse()
reverse 用于颠倒排列数组元素,返回改变后的数组,该方法将改变原数组。
slice()
- slice方法可从已有的数组中返回选定的元素–返回一个新的数组,且原数组不会发生改变。
- 语法:arrayObject.slice(start,end)
- start: 必填字段,规定从何处开始(索引0)选择。如果为负数,则是从数据尾部开始算起的位置。
- end:可选字段,不包含该元素,如果包含该参数,则结果不包含该索引处的值。
- 重要应用是将一个类数组的对象转化为真正的数组:Array.prototype.slice.call({ 0: ‘a’, 1: ‘b’, length: 2 })
- “web/entry-runtime.js”.slice(3) -> “entry-runtime.js”
splice()
- splice方法用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素,该方法会改变原数组。
- 参数说明:第一个参数为删除的开始位置,第二个参数为删除的参数个数,如果后面还有参数,表示要被插入数组的新元素。起始位置如果是负数,表示从倒数位置开始删除。
sort()
- sort方法对数组成员进行排序,默认按照字典顺序排序。排序后,原数组发生改变。
- 按照自定义方式排序,可传入函数作为参数
map()
- map()方法将数组的所有成员依次传入参数函数,然后把每一次的执行结果组成一个新数组返回,注意数组数组中的值是原始数据类型,确实不会改变原数组,但是如果值为引用数据类型,那么会对原数组进行更改。
- map接受一个函数作为参数,参数依次为:当前成员、当前位置、数组本身。
- map还可以接受第二个参数,用来绑定回调函数内部的this变量。
forEach()
- forEach()与map()方法很相似,也是对数组的所有成员依次执行参数函数。包含参数、第二个参数等与map完全一致,只是forEach不返回值,只是用来操作数据。
filter()
- filter用于过滤数组成员,满足条件的成员组成一个新数组返回。
- **接受一个函数作为参数,**参数依次为:当前成员、当前位置、数组本身。
- 数组的所有成员执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组。
find()
数组实例的find()方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
includes()
判断一个数组中是否包含某个选项 [1, 2, 3].includes(2)
flat() flatMap()
数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。
以将flat(n)方法的参数写成一个整数,表示想要拉平的层数,默认为1。如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。
flatMap()方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。
some() every()
- 与map、forEach、filter一样接受一个函数作为参数,且函数内参数一致。
- some为只要一个成员的返回值是true,则整个some方法就返回true。
- every为所有成员的返回值是true,则整个every方法就返回true。
reduce() reduceRight
- reduce和reduceRight方法依次处理数组的每个成员,最终累计为一个值。
1 | [1,2,3,4,5].reduce(function(a,b){ |
reduce方法和reduceRight方法的第一个参数都是一个函数,该函数接受以下四个参数
- 累积变量 – 默认为数组的第一个成员 必选
- 当前变量 – 默认为数组的第二个成员 必选
- 当前位置 – 从0开始 可选
- 原数组 可选
indexOf lastIndexOf()
- indexOf方法返回给定元素在数组中第一次出现的位置,如果没有则为-1.
- indexOf还可以接收第二个参数,表示搜索的开始位置。
本文标题:JavaScript数组
文章作者:六个周
发布时间:2021-03-26
最后更新:2022-05-04
原始链接:https://blog.liugezhou.online/012-JS%E6%95%B0%E7%BB%84/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!