javascript数组常见的22种方法总结
栏目: JavaScript · 发布时间: 5年前
内容简介:数组是数据的创建数组的基本方式有第一种是使用 Array 构造函数:var colors = new Array();
===什么是数组===
数组是数据的 有序列表 。
创建数组的基本方式有 两种 。
第一种是使用 Array 构造函数:var colors = new Array();
创建数组的第二种基本方式是使用数组字面量表示法:var colors = ["red", "blue", "green"];
===检测数组的方法===
1》通过 instanceof 来判断:value instanceof Array;
2》通过 Array.isArray() 方法来判断;
===数组的方法===
一共总结数组常见的 22 种方法!
其中 7 种会改变原数组值:push()、pop()、shift()、unshift()、reverse()、sort()、splice()
15 种不会改变原数组的值:toString()、toLocaleSting()、valueOf()、join()、concat()、slice()、indexOf()、lastIndexOf()、every()、filter()、forEach()、map()、some()、reduce()、reduceRight()
1.转换方法(toString、toLocaleSting、valueOf()、join) (不会修改原数组!)
所有对象都会有toString、toLocaleSting、valueOf()方法。
toString、toLocaleSting方法会将数组转换成以逗号(,)分割的字符串。
join()接收一个参数,将数组转换为字符串,并以这个参数作分割。
2.栈方法 (修改原数组!)
栈是一种 LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。而栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置——( 栈的顶部 )。ECMAScript 为数组专门提供了 push()和 pop()方法,以便实现类似栈的行为。
因为是栈 后进先出 ,而且 推入/弹出 都是发生在栈的顶部。因此数组的尾部实际是存放在栈的顶部,所以push()( 后增方法 )添加在数组尾部,就是添加在栈的顶部。pop方法删除数组 尾部一位数据 也就是在栈顶部删除 最新数据 ,满足后入先出去。
3.队列方法 (修改原数组!)
队列数据结构的访问规则是 FIFO(First-In-First-Out, 先进先出)。队列在列表的 末端添加项,从列表的前端移除项 。
结合使用 shift()和 push()方法,可以像使用队列一样使用数组。
因为队列是先进先出,所以 数组的尾部 就对应着 队列末端 ,所以通过push方法在数组尾部添加数据就是在队列末端添加。在使用 shift 方法在 数组顶部移除 一位数据就是在队列前端移除。
ECMAScript 还为数组提供了一个 unshift ()方法。顾名思义,unshift()与 shift()的用途相反: 它能在数组 前端添加任意个项 并返回新数组的长度。因此,同时使用 unshift()和 pop()方法 ,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项。
4.重新 排序 方法 (修改原数组!)
数组中已经存在两个可以直接用来重排序的方法:reverse()和 sort()。
reverse反转数组,sort按升序排列数组项—— 即最小的值位于最前面 。sort()方法会调用每个数组项的 toString()转型方法,然后比较得到的字符串(javascript字符串在进行大于(小于)比较时,会根据第一个不同的字符的ascii值码进行比较,当数字(number)与字符串(string)进行比较大小时,会强制的将数字(number)转换成字符串(string)然后再进行比较) ,以确定如何排序。
sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等 则返回 0,如果第一个参数应该位于第二个之后则返回一个正数。
5.操作方法
concat (不修改原数组!):先创建当前数组一个 副本 ,然后将接收到的参数 添加到这个副本的末尾,最后返回 新构建的数组 。在没有给 concat()方法传递参数的情况下,它只是 复制当前数组并返回副本。如果传递给 concat()方法的是一或多个数组,则该方法会将这些数组中的 每一项都添加到结果数组中 。
slice() (不修改原数组!):基于当前数组中的一或多个项创建一个新数组。slice()方法可以 接受一或两个参数,即要返回项的 起始 和 结束 位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组 末尾的所有项 。如果有两个参数,该方法返回 起始 和 结束位置 之间的项,但 不包括结束位置的项 。
起始值大于结束值:返回【】;
负数则加上数组长度 来确定坐标slice(-2,-1) === slice(1,2);
splice (修改原数组!):有很多种用法:
删除:可以删除任意数量的项,只需指定 2 个参数:要删除的 第一项 的位置和 要删除的项数 。 例如,splice(0,2)会删除数组中的前两项。
插入:可以向指定位置插入任意数量的项,只需提供 3 个参数: 起始位置 、 要删除的项数(0) 和 要插入的项 。如果要插入多个项,可以再传入第四、第五,以至任意多个项。例如, splice(2,0,"red","green")会从当前数组的位置 2 开始插入字符串"red"和"green"。
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数: 起始位置 、 要删除的项数 和 要插入的任意数量的项 。插入的项数不必与删除的项数相等。例如, splice (2,1,"red","green")会删除当前数组位置2的项,然后再从位置2开始插入字符串"red"和"green"
6.位置方法 (不修改原数组!)
indexOf()和 lastIndexOf() 。这两个方法都接收两个参数: 要查找的项 和(可选的) 起点位置的索引 。其中,indexOf()方法从数组的开头(位置0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。内部使用 === 进行比较。
7.迭代方法 (不修改原数组!)
ECMAScript5为数组定义了 5个迭代方法 。每个方法都接收 两个参数 : 要运行的函数 、 运行该函数的作用域对象 (可选的)(影响 this 的值)。
传入这些方法中的函数会接收三个参数: 数组项的值 、 该项在数组中的位置 和 数组对象本身 。根据使用的方法不同,这个函数执行后的返回值可能会也可能不会影响方法的返回值。
every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。 filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
forEach():对数组中的每一项运行给定函数。这个方法 没有返回值 。
map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。
8.归并方法(不修改原数组!)
reduce()和 reduceRight() 。这两个方法都会迭代数组的所有项,然后构建一个 最终返回的值 。其中,reduce()方法从数组的第一项开始,逐个遍历到最后。而reduceRight()相反。
接收 两个参数 : 要调用的函数 、 作为归并基础的初始值 (可选)
函数接收4个参数: 前一个值 、 当前值 、 项的索引 和 数组对象 。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第 一个参数是数组的第一项,第二个参数就是数组的第二项。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 数组常见的遍历循环方法、数组的循环遍历的效率对比
- ios基础 – 常见的数组使用介绍[原创]
- JavaScript实现数组去重的常见方式
- C语言指针数组和数组指针
- 数组 – 如何在Swift中将数组拆分成两半?
- 菜鸡的算法修炼:数组(旋转数组的最小数字)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
代码阅读方法与实践
斯平内利斯 / 赵学良 / 清华大学出版社 / 2004-03-01 / 45.00元
代码阅读有自身的一套技能,重要的是能够确定什么时候使用哪项技术。本书中,作者使用600多个现实的例子,向读者展示如何区分好的(和坏的)代码,如何阅读,应该注意什么,以及如何使用这些知识改进自己的代码。养成阅读高品质代码的习惯,可以提高编写代码的能力。 阅读代码是程序员的基本技能,同时也是软件开发、维护、演进、审查和重用过程中不可或缺的组成部分。本书首次将阅读代码作为一项独立课题......一起来看看 《代码阅读方法与实践》 这本书的介绍吧!
RGB CMYK 转换工具
RGB CMYK 互转工具
HEX CMYK 转换工具
HEX CMYK 互转工具