存档2019-02-27

汇总二:Javascript数组这几波操作你都会了吗?

上文介绍了js的splice函数,本文接着介绍JS数组的几组基本操作,灵活的运用这些可以完成数据的绝大部分操作,必须掌握。

1 push和unshift方法:添加元素

push和unshift函数都是给数组插入新的元素,一个是在数组末尾,一个是在数组开始位置。两者的操作对象都是原数组,也就是函数执行后,原数组会被改变。

功能:在数组最后插入新的元素,组成新的数组;

参数:个数不限,为空不添加任何元素;

返回值:添加新元素后的数组的长度。

在数组末尾增加元素

unshift和push添加元素的位置相反,在数组的开始位置添加元素。

在数组开始位置添元素

需要特别注意的是,push和unshift虽然名字上不是一对,但按功能上他们是一对函数,都是插入新元素。

2 pop和shift方法:删除元素

这两个都是删除数组的一个元素,pop函数删除数组的最后一个元素,shift删除数组的第一个元素。两个的操作对象都是原数组,执行函数后,就是删除元素后的数组

以pop函数为例开始介绍:

功能:删除数组最后一个元素;

参数:该函数没有参数;

返回值:数组中被删除的元素。

shitf函数除了删除的元素是数组第一个元素外,其他和pop函数一样,同样不好记的是,这两个名字不是一对,但是功能却是一对。

3 reverse函数:对数组倒序

该函数没有参数,返回值就是倒序排列后的数组,函数执行结果就是倒序后的原数组。

注意,这个倒序就是简单的根据原来的排列顺序倒过来,不是按照某个规则重新进行排序。

4 sort方法(难点):对数组排序(升序)

sort函数:根据ASCII码对数组元素的字符挨个进行升序排序,当元素有多个字符的时候,先比较第一个字符的ASCII码,相同则比较第二个字符的ASCII码,以此类推。

4.1 对

4.2 多字符的时候

4.3 让sort按照实际值进行排列

利用sort函数按照数组元素的实际值(十进制)来排序,而不是按照ASCII逐一按字符来排列。

利用sort函数的机制,给sort函数传递一个函数参数。sort函数的其实采用的是冒泡排序方法,利用这个sort函数机制,我们可以给sort方法一个参数,大于零表示符合要求,两者调换位置,等于零表示两者一样,保持不动,小于零表示不符合对比要求,位置不动。

这样就实现了通过元素实际值来进行升序排列,把a-b改成b-a就变成了降序排列。至于sort函数的内部机制,我们以后在深入研究,现在只要记住并且会使用就好了。

好了,以上就是JS数组中一些基本的操作方法,其中splice和sort函数较为复杂,需要多思考敲代码熟练熟练。

上文介绍了js的splice函数,本文接着介绍JS数组的几组基本操作,灵活的运用这些可以完成数据的绝大部分操作,必须掌握。

1 push和unshift方法:添加元素

push和unshift函数都是给数组插入新的元素,一个是在数组末尾,一个是在数组开始位置。两者的操作对象都是原数组,也就是函数执行后,原数组会被改变。

功能:在数组最后插入新的元素,组成新的数组;

参数:个数不限,为空不添加任何元素;

返回值:添加新元素后的数组的长度。

在数组末尾增加元素

unshift和push添加元素的位置相反,在数组的开始位置添加元素。

在数组开始位置添元素

需要特别注意的是,push和unshift虽然名字上不是一对,但按功能上他们是一对函数,都是插入新元素。

2 pop和shift方法:删除元素

这两个都是删除数组的一个元素,pop函数删除数组的最后一个元素,shift删除数组的第一个元素。两个的操作对象都是原数组,执行函数后,就是删除元素后的数组

以pop函数为例开始介绍:

功能:删除数组最后一个元素;

参数:该函数没有参数;

返回值:数组中被删除的元素。

shitf函数除了删除的元素是数组第一个元素外,其他和pop函数一样,同样不好记的是,这两个名字不是一对,但是功能却是一对。

3 reverse函数:对数组倒序

该函数没有参数,返回值就是倒序排列后的数组,函数执行结果就是倒序后的原数组。

注意,这个倒序就是简单的根据原来的排列顺序倒过来,不是按照某个规则重新进行排序。

4 sort方法(难点):对数组排序(升序)

sort函数:根据ASCII码对数组元素的字符挨个进行升序排序,当元素有多个字符的时候,先比较第一个字符的ASCII码,相同则比较第二个字符的ASCII码,以此类推。

4.1 对

4.2 多字符的时候

4.3 让sort按照实际值进行排列

利用sort函数按照数组元素的实际值(十进制)来排序,而不是按照ASCII逐一按字符来排列。

利用sort函数的机制,给sort函数传递一个函数参数。sort函数的其实采用的是冒泡排序方法,利用这个sort函数机制,我们可以给sort方法一个参数,大于零表示符合要求,两者调换位置,等于零表示两者一样,保持不动,小于零表示不符合对比要求,位置不动。

这样就实现了通过元素实际值来进行升序排列,把a-b改成b-a就变成了降序排列。至于sort函数的内部机制,我们以后在深入研究,现在只要记住并且会使用就好了。

好了,以上就是JS数组中一些基本的操作方法,其中splice和sort函数较为复杂,需要多思考敲代码熟练熟练。

JS是如何实现函数重载效果的?——扒一扒隐形的arguments对象

什么是重载?

通俗来说,函数重载就是同一个名字的函数完成相似但又不同的功能。通常是根据函数执行时的参数个数或者类型来执行不同的行为。

函数重载并不是某种程序语言的独有特性,而是一种处理方式,只是每种语言的实现方式不尽相同。Java中是可以为同一个函数写两个定义的,只要各自定义的时候,保证接收的参数个数或者类型不同,所以相当于在Java中,函数重载是内置了的,已经给你做好了。而在JS中,只要函数名相同,后面的定义就会覆盖前面的定义,所以无法想Java那样实现重载。但是我们可以通过JS本身的特点去模拟实现Java中函数重载的功能。

利用arguments对象来模拟函数的重载

JS中模拟重载的效果是通过arguments对象来实现的。arguments对象是所有(非箭头)函数中都可用的局部变量,默默存在在函数中。

JS中函数可以获取任意个数的参数

首先js中,函数可以接受任意多个参数而不会报错。其他语言中,不符合函数声明中参数要求的函数调用会报错。并且JS中函数获取的这些参数以类数组的形式存放在arguments对象中,所以arguments对象是类数组对象。

JS中,如果有参数多余,则会自动忽略多余的参数,不会报错。

以上均不会报错,输出结果为5,5,NaN,NaN。

参数可以任意个,那么如何获取函数的参数呢?答案就是arguments对象。arguments对象可以通过中括号加标号的方式arguments[i]获取参数值,通过arguments.length来获取参数的个数,这种操作有点像数组,但arguments是对象,不是数组类型,所以数组的其他使用方式并不适用。

arguments存储函数的参数

arguments获取了函数的参数,我们就可以根据函数的特点,比如个数来执行不同的函数语句,模拟重载的效果。

从例子可以看到,js通过arguments对象获取函数的参数,然后根据参数通过判断语句的结果去执行不同的功能,这就是通过显示的方式实现了函数重载的效果。因为有重载的效果,所以不用分别给微信、现金、刷卡等方式分别定义一个函数,然后分别调用。