数组常见的方法

数组方法
一.概念:
数组是一个数据的集合,也就是我们把一些数据放在一个盒子里面,按照顺序排好,这个盒子就是一个数组,存储着一些数据的集合

二.分类:
我们简单的把所有数据类型分为两个大类 基本数据类型 和 复杂数据类型
基本数据类型: number / string / boolean / undefined / null
复杂数据类型: object / function / array / …

三.创建数组的方式
1.使用 Array 构造函数
使用 js 的内置构造函数 Array创建一个数组

2.使用字面量创建数组

四.数组的常规方法-----API
1.push()-----后增
(1).功能:是用来在数组的末尾追加一个或多个元素,即:可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。
(2).参数:一个或多个元素
(3).返回值:插入数据之后数组的长度。
代码如下:

注:push(ele[,ele[,ele]])可以传递 1 ~ n 个参数

2.unshift-----前增
(1).功能:是在数组的最前面添加一个或多个元素,即:将参数添加到原数组开头
(2).参数:一个或多个元素
(3).返回值:插入数据之后数组的长度。
代码如下:

注:unshift(ele[,ele[,ele]])可以传递 1 ~ n 个参数

3.pop()-------后删
(1).功能:是用来删除数组末尾的一个元素
(2).参数:无
(3).返回值:返回数组的最后一个元素
代码如下:

注:a.pop没有参数;
b.调用一次按照规则删除一个;
c.删除了什么数据,返回值就是什么;

4.shift()------前删
(1).功能:是删除数组最前面的一个元素
(2).参数:无
(3).返回值:返回删除元素的值
代码如下:

注:a.shift 没有参数;
b.调用一次按照规则删除一个;
c.删除了什么数据,返回值就是什么;

5.sort()------排序;
(1).功能:是用来给数组排序的,这个只是一个基本的简单用法,只能对数组中的数字进行简单的排序(数组中数字的位数为1)
(2).参数:函数方法
(3).返回值:根据参数和运行结果进行返回
代码如下:

arr.sort()----->排序字母;
arr.sort()只能进行简单的1位数字的排序,
arr.sort(function(a,b){ return a - b})-----排序数字

注:当arr.sort(function(a,b){ return a - b})时,为升序排列
当arr.sort(function(a,b){ return b - a})时,为降序排列

6.concat()---------拼接
(1).功能:将参数添加到原数组中;
(2).参数: 1个或者n个数组
(3).返回值:一个新的拼接好的数组
代码如下:

注:concat()方法—拼接多个数组,不该变原数组

7.slice()-------截取数组 ;
(1).功能:截取数组
(2).参数:arr.slice(start , end)
参数详解:
start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
(3).返回值:返回一个新的数组,包含从start到 end(不包括该元素)的arr中的元素
arr.slice(start , end);
代码如下:

注:slice( startIndex [,endIndex]) :
大于等于起始点下标,小于endIndex下标之间的内容;
特殊值 : endIndex : -1; 截止到倒数第几个;

8.splice()-----选取-----对数组批量的操作;
(1).功能:很强大的数组方法,它有很多种用法,可以实现删除、插入和替换.(该方法会改变原始数组)
(2).参数:arr.splice(startindex,数量,replaceItem )
参数详解:
startindex:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
数量:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
replaceItem :可选。向数组添加的新项目
(3).返回值:含有被删除的元素的数组,若没有删除元素则返回一个空数组
代码如下:
arr.splice(startindex,howmany)
常规用法:删除掉对应起始点对应数量的项,并返回删除的结果。

splice( startIndex ):只传递一个参数;如果不传递第二个参数,会直接截取到数组结尾;

splice (startIndex , 数量 , replaceItem (替换的项) , … ,);

向数组的某个位置插入一条或者多条数据;

9.join()----------转换类方法
(1).功能:数组转换成字符串
(2).参数:可有可无
(3).返回值:新数组
代码如下:
如果join不传递参数,默认以 “,” 进行分割;

如果join传递参数,如:日期的转换 => year/month/date

10.reverse()----反转数组
(1).功能:反转数组项的顺序,会改变原数组
(2).参数:无
(3).返回值:新数组
代码如下:

**

五.ES5常用方法------索引
**
1.indexOf()个索引方法
(1).返回要查找的项在数组中首次出现的位置,在没找到的情况下返回-1
(2).indexOf()--------array.indexOf(item,start) (从数组的开头(位置 0)开始向后查找)
参数详解:
item: 必须。查找的元素。
start:可选的整数参数。规定在数组中开始检索的位置,如省略该参数,则将从array[0]开始检索
代码如下:

2.lastIndexOf()-------索引方法
(1).返回要查找的项在数组中首次出现的位置,在没找到的情况下返回-1
(2).lastIndexOf()--------array.lastIndexOf(item,start) (从数组的末尾开始向前查找)
参数详解:
item: 必须。查找的元素。
start:可选的整数参数。规定在数组中开始检索的位置。如省略该参数,则将从 array[array.length-1]开始检索
代码如下:

**

六…ES5常用方法------迭代器方法
**
1.forEach()
(1).功能:对数组进行遍历循环
(2).语法:arr.forEach(function(item , index , arr){})
参数详解:
item:代表数组的元素;
index:代表索引值,即下标;
arr:即数组
(3).返回值:没有返回值
代码如下:

输出的结果为:

2.map();
(1).功能:“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
(2).语法:arr.map( function( item , index , arr){})
参数详解:
item:代表数组的元素;
index:代表索引值,即下标;
arr:即数组
(3).返回值:有返回值; 就是每次函数执行的返回值组成的数组;
代码如下:

注:map()方法,可以改变数组之中所有项,返回改变之后的新数组;原数组不改变,将元素组改变的值赋值给新数组

  1. filter() ;
    (1).功能:“过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。
    (2).语法:arr.filter( function( item , index , arr ){})
    (3).返回值:有返回值; 一个数组,筛选之后的数组
    注:如何进行筛选 :
    函数的返回值为true,则表示选中当项数据, 数组之中会添加这一项数据。
    函数的返回值为false,则表示过滤,数组之中不会添加这一项数据;
    代码如下:

注:函数什么的都不写的情况执行结果都是 undefined , 那么一项内容都不会放进新数组之中

4.every()
(1).功能:判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。
(2).语法:arr.every( function( item , index ){})
(3).返回值:true/false
代码如下:

注:判定方法 :
返回值是一个布尔值 :
必须所有的函数执行结果都为true , 返回结果才为true;

相对高级的特性:

5.some();
(1).功能:判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。
(2).语法:arr.some( function( item , index ){})
(3).返回值:true/false
代码如下:

注:判定方法 :
返回值是一个布尔值 :
函数之中有一个执行结果为true , 返回结果则为true;

相对高级的特性:

**

七…ES5常用方法------归并方法
**
reduce()------归并 : 把数组中所有的项进行整合运算;
1.概念:对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
2.参数传值:
(1).参数传递方式 1 : reduce (函数 , start)
代码如下:

运行结果为:

应用:
A.求和:
代码如下:

运行结果:

B.求积:
代码如下:

运行结果:

(2).参数传递方式 2 : reduce (函数 )
如果没有传递第二个参数,那么数组的第一项就为start第一次的值;
代码如下:

运行结果:

(3).总结:
reduce 难点: 第一个参数 :
第一次执行的时候 :
如果传递了第一次就是传递的值;
如果没有传递那么就是数组的第一项,item 则为第二项;
其余的时候 其值都为上一次运算的结果;

**

八.数组常用方法------字符串
**
1.创建字符串:
字面量------>var str1 = “”;
构造函数---->var str2 = new String("");
区别:
除了数据类型不一样:字面量是 string;构造函数是 object 类型;其余的使用方式都完全一致;
2.字符串实用API;
(1).字符串的使用方法和数组非常的相似;
(2).join 数组转换成字符串;(参考上边)
(3)split() : 分割;字符串转换成数组的;
代码如下:

(4).字符串截取 :
substr()
代码如下:

substring()
代码如下:

注:截取的内容是:大于等于 start 小于 end 的;slice用法和数组的slice用法完全一致;

eS6(ES2015)引入了许多新的数组方法,以下是其中一些常见方法: 1. `Array.from()`:将类数组对象或可迭代对象转换为真正的数组。 2. `Array.of()`:创建一个包含传入参数的新数组。 3. `Array.prototype.find()`:返回数组中满足条件的第一个元素。 4. `Array.prototype.findIndex()`:返回数组中满足条件的第一个元素的索引。 5. `Array.prototype.includes()`:判断数组是否包含指定的元素。 6. `Array.prototype.fill()`:用一个固定值填充整个数组或指定的部分。 7. `Array.prototype.keys()`:返回一个包含数组索引的新迭代器对象。 8. `Array.prototype.values()`:返回一个包含数组值的新迭代器对象。 9. `Array.prototype.entries()`:返回一个包含数组索引和值的新迭代器对象。 10. `Array.prototype.flat()`:将多维数组扁平化为一维数组。 11. `Array.prototype.flatMap()`:首先使用映射函数映射每个元素,然后将结果扁平化为一维数组。 12. `Array.prototype.forEach()`:对数组中的每个元素执行提供的函数。 13. `Array.prototype.map()`:创建一个新数组,其中每个元素为原始数组元素调用提供的函数的结果。 14. `Array.prototype.filter()`:创建一个新数组,其中仅包含满足条件的原始数组元素。 15. `Array.prototype.reduce()`:将数组元素通过提供的函数累积为单个值。 16. `Array.prototype.reduceRight()`:与`reduce()`相同,但从右向左处理数组元素。 17. `Array.prototype.some()`:检查数组中是否至少有一个元素满足条件。 18. `Array.prototype.every()`:检查数组中的所有元素是否都满足条件。 19. `Array.prototype.sort()`:原地对数组进行排序。 20. `Array.prototype.reverse()`:原地反转数组元素的顺序。 这些是ES6中常见数组方法,它们提供了更便捷和灵活的方式来操作和处理数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值