本文翻译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

转载于:https://www.cnblogs.com/otakuhan/p/7707379.html

[译]Javascript中的mutators相关推荐

  1. [译] JavaScript 中的 CSS:基于组件的样式的未来

    本文讲的是[译] JavaScript 中的 CSS:基于组件的样式的未来, 原文地址:CSS in JavaScript: The future of component-based styling ...

  2. [译]JavaScript中,{}+{}等于多少?

    最近,Gary Bernhardt在一个简短的演讲视频"Wat"中指出了一个有趣的JavaScript怪癖:在把对象和数组混合相加时,会得到一些你意想不到的结果.本篇文章会依次讲解 ...

  3. [译]Javascript中的闭包(closures)

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  4. [译]JavaScript中的属性:定义和赋值的区别

    原文:http://www.2ality.com/2012/08/property-definition-assignment.html 你知道吗?定义一个属性和为一个属性赋值是有区别的.本文解释了两 ...

  5. Javascript 中 Array.push 要比 Array.concat 快 945 倍

    [译] Javascript 中 Array.push 要比 Array.concat 快 945 倍!

  6. [译] ES6+ 中的 JavaScript 工厂函数(第八部分)

    本文讲的是[译] ES6+ 中的 JavaScript 工厂函数(第八部分), 原文地址:JavaScript Factory Functions with ES6+ 原文作者:Eric Elliot ...

  7. Javascript中的陷阱大集合【译】

    参考:http://www.2cto.com/kf/201111/111203.html 昨天晚上在自己的个人技术博客上翻译了一篇有关Javascript的文章,今天想想还是把它投稿到博客园吧,大家可 ...

  8. 「译」javascript 中的 delete

    在这篇文章中作者从<JavaScript面向对象编程指南>一书中关于 delete 的错误讲起,详细讲述了关于 delete 操作的实现, 局限以及在不同浏览器和插件(这里指 firebu ...

  9. 【译】JavaScript中的Callbacks

    你是否遇到过"callbacks"一词,但是不知道这意味着什么?别着急.你不是一个人.许多JavaScript的新手发现回调也很难理解. 尽管callbacks可能令人疑惑,但是你 ...

最新文章

  1. 基于分类任务的信号(EEG)处理--代码分步解析
  2. 【漏洞复现】ThinkPHP5 5.x 远程命令执行(getshell)
  3. Java Servlet生成JSON格式数据并用jQuery显示
  4. 反编译工具Reflector下载(集成FileGenerator和FileDisassembler)
  5. LiveVideoStackCon 2021上海站 倒数计时:2
  6. 机器学习:如何在安卓上集成TensorFlow
  7. linux 用户 组区别吗,Linux系统的用户和用户组有什么区别
  8. 开源是如何让Android成为移动市场大佬的?
  9. 【计算机网络复习 数据链路层】3.5.5 CSMA-CA协议
  10. 前端基础-html-表格的结构标签(了解)
  11. angularJS之angular-datatable的方法
  12. SQL Server 2014中的混合云和Hekaton功能
  13. 编程入门先学什么python-编程入门先学什么比较好
  14. java 单体 启动优化_java设计优化之单例模式
  15. 微信开发之微信公众平台基本配置--服务器token验证(Java实现)
  16. win7官方原版iso镜像
  17. UML2.51边译边学-接口
  18. Ubuntu系统播放*.avi格式出错
  19. AVS2解码图像管理
  20. python写入excel文件追加写入_Python读写/追加excel文件Demo

热门文章

  1. 单片机p2.0引脚c语言,单片机p2.0?
  2. php mysql 类型_php mysql bigint 类型
  3. 全国计算机信息高新技术办公软件应用模块,全国计算机信息高新技术办公软件应用模块(Windows系列)教案.doc...
  4. php开启filtervar_PHP如何使用filter_var()函数?(代码示例)
  5. 真假签到题(签到+打表)
  6. linux如何用gcc编译c程序,Ubuntu之如何使用gcc编译C语言程序
  7. 2019交大计算机考研分数线,上海交大2019考研计算机软件与理论的复式分数..._考研_帮考网...
  8. 鸿蒙空间最高级,洪荒:我能进化万物
  9. spyder里import tensorflow报错显示没有tensorflow模块解决
  10. mybatis中的#{}与${}在原理上的区别