[译]Javascript中的mutators

Posted 马大欧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[译]Javascript中的mutators相关的知识,希望对你有一定的参考价值。

本文翻译youtube上的up主kudvenkat的javascript tutorial播放单

源地址在此:

https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b

 

Javascript中有很多方法是可以用在数列对象上的.有的方法会改变数列对象,而有的则不会,那些会改变数列对象的方法叫做mutator方法

 

一下是一些非mutator的方法:

contains

indexOf

lastIndexOf

 

以下则是一些mutator方法

push

pop

shift

unshift

reverse

sort

splice

 

我们在20章讨论过push(),pop(),shift()和unshift()方法.在本次视频中我们将讨论

sort

reverse

splice

 

Javascript sort方法:将一个数列中的元素排序.默认状态下,sort()方法会把数列中的值转化成string并且比较这些strings从而达到排序的目的.但是这样只是对string很有效,对于数字的话则不然.我们来看个例子

 

例子:注意到string是很完美地被排序的

var myArray = ["Sam","Mark","Tom","David"];
myArray.sort();
document.write(myArray);

Output : David,Mark,Sam,Tom

 

现在,让我们来看看给数字排序的例子

var myArray = [20, 1 , 10 , 2, 3];
myArray.sort();
document.write(myArray);

Output : 1,10,2,20,3

 

注意到数字并没有按我们预期地排序.我们解决这个问题的方法就是给sort函数添加一个"比较函数"作为其参数.这个比较函数应该返回一个负数,0,或者正数

 

例子:

var myArray = [20, 1, 10, 2, 3];
myArray.sort(function (a, b) { return a - b });
document.write(myArray);

Output : 1,2,3,10,20

 

现在我们来讨论一下这个比较函数是如何工作的.这个函数有两个参数,(a,b)这个函数将a-

b的结果返回.如果返回值为

正数-则a比b大

负数-则a比b小

0-则a等于b

 

所以,基于返回的值,数列中的数字就可以被排序了

 

将数字降序排序:有两种方法

1.将(a-b)改为(b-a)

例子:

var myArray = [20, 1, 10, 2, 3];
myArray.sort(function (a, b) { return b - a });
document.write(myArray);

2.升序排序后然后再用reverse()函数来达到降序的目的

例子:

var myArray = [20, 1, 10, 2, 3];
myArray.sort(function (a, b) { return a - b }).reverse();
document.write(myArray);

Output : 20,10,3,2,1

 

Javascript reverse方法:将数列中的元素反向排序

Javascript splice方法:给数列中增加或者减少元素

格式:array.splice(index,deleteCount,item1,....itemX)

 

index - 必须,指定往哪个地方加入或者移除元素

deleteCount - 必须,指定要移除多少个元素.如果设为0,则不会有元素被移除

item1,.....,itemX - 非必须,指定要被加入数列中的元素

 

例子:

var myArray = [1,2,5];
myArray.splice(2, 0, 3, 4);
document.write(myArray);

Output : 1,2,3,4,5

 

例子:

var myArray = [1,2,55,67,3];
myArray.splice(2, 2);
document.write(myArray);

Output : 1,2,3

以上是关于[译]Javascript中的mutators的主要内容,如果未能解决你的问题,请参考以下文章

jQuery中的100个技巧(译)

javaScript中的严格模式 (译)

[译]Javascript中的数列

[译]Javascript在ASP NET中的运用

[译]Javascript中的switch语句

[译]javascript中的依赖注入