上一节还有一个注意的地方:建议所有函数的必需参数使用命名参数,而非必须的参数使用对象来封装。


  通过这几天的读书,发现了一个深入了解所学知识的一个捷径——读书。本来我在计算机这方法的所有知识一般都是从视频中摸索着学习的,

所以后来就养成了一个习惯,感觉学点东西没有视频讲解自己都有点学不下去。但是实习了以后发现没有那么一大把的时间来供我学习看视频,

幸好程序袁有生俱来的危机感使我意识到应该找到另一个学习到东西的途径,于是我就开始了阅读,当然我们阅读的时候一定要结合自己在项目

中遇到的问题,带着疑问来读书。这样我们就摆脱了一个大坑——都死书,死读书。

  所以我再这里建议在刚刚学习计算机的时候我们应该看一点视频这样我们可以更快的发现自己的兴趣点,到了有一定基础的时候,应该换一

种得到知识的途径,因为书中记载的还是比较详细,并且我们得到一些知识也是一些人从书上得到的,然后转达给我门,但是每个人看书时认为

知识的重点都是不同的,我们从别人那里汲取的养分都是他们吸收完的,虽然这样再某种意义上我们可以更快的'入门',但是缺少了一种快感,一种

经过自己的思考后得到知识的快感。

  好了,说了这么多总之一句话有条件的同志们开始读书吧。开始我们今天的内容。

Array数组

  再这里建议大家创建数组和创建对象一样,我们都应该使用字面量表示法(如下),因为使用字面量来创建数组或者对象就不会调用Array或Object

的构造函数。提高一点效率。

  var arr = ['red','green','blue'];

  var obj = {

    name: 'kim',

    age: 12

  };

  array.length:不是一个只读的属性,还可以给数组赋值长度。

      var arr = ['red','green','blue'];

    arr.length = 4;

    arr[3] = 'black';

    alert(arr[3]);

  检测数组instanceof,isArray:

  对于一个网页,或者全局环境来书使用instanceof操作符就可以检测数组。

    if(value instanceof Array){

      //dosomething

    }

  instanceof他假定单一的全局执行环境,当网页包含多个框架,那就存在两个全局执行环境,如果你从第一个执行环境中传入到另一个执行环境一个数组

那么这个数组就与第二个全局执行环境的原生数组分别具有自己不同的构造函数。所以为了解决这个弊端,ECMAScript 5 中新增了Array.isArray();方法。

    if(Array.isArray(arr)){

      //dosomething

    }

  join:

    var colors = ['red','blue','green'];

    alert(colors.join('||'));//red||blue||green

  模拟栈、队列

    栈都操作的都是末端元素,我们可以用push(),来推入元素,用pop();来弹出元素。(LIFO)

     var colors = ['red','blue','green'];

     colors.push('black');

       alert(colors[3]);//black

     var item = colors.pop();

     alert(item);//black

     队列是在末端插入,在前端移除,用push()来推入,用shift();移除元素(FIFO)

     var colors = ['red','blue','green'];

     colors.push('black');

       alert(colors[3]);//black

     var item = colors.shift();

     alert(item);//red

      有shift就有unshift();就是在前端插入元素。这里就不再赘述了

  数组排序:

    reverse()就是反转数组顺序。

      var arr = [1,2,4,5,3];

      arr.reverse();

      alert(arr);//35421

     因为上面的方法不够灵活,就出现了 sort();

    sort();方法会把数组中原有的元素都调用对应的toString()方法,然后比较String的大小,按照从小到大的顺序进行排序。

    var arr = [0,1,5,10,15];

    arr.sort();

    alert(arr);//0,1,10,15,5因为字符串"10"位于字符串"5"的前面,所以这个方法也不狗灵活,因此sort()还可以接受一个比较函数

sort()接受一个比较函数,比较函数就是返回1说明第一个参数应该位于第二个参数之后,0就是两个参数相等,-1第一个参数位于第二个参数之前

    function compare(value1,value2){

      return value2 - value1;//意味着有大到小排序

    }

    var values = [0,1,5,10,15];

    values.sort(compare);

    alert(values);//15,10,5,1,0

其他array方法:

  var colors = ['red','green','blue'];

    var colors2 = colors.concat('yellow',[black,white]);//concat把接受到的参数一个个附加到原有数组的副本的后面,然后返回这个副本。

    alert(colors2);//red,green,blue,yellow,black,white

  

   var colors3 = colors.slice(1);//slice就是可以断章取意(基于这个数组的一个或多个重新创建一个数组),只有一个参数就是从参数这个下标到数组的最后,

    var colors4 = colors.slice(1,2); //有两个参数就是从第一个参数这个下标开始取第二个参数这么长。

    alert(colors3);//green,blue

    alert(colors4);//green,blue

  concat和slice都不会影响原有数组

   var remove = colors.splice(0,1);//splice中只有两个参数那么说明是删除从第0个开始取到1这个长的元素

   alert(colors);//green,blue

  alert(remove);//red

  var add = colors.splice(1,0,'yellow','black');//从下标是1的位置开始删除0个元素,然后再插入两个yellow,black两个元素

  alert(colors);//green,yellow,black,blue

  alert(add);//返回一个空数组

  var replace = colors.splice(1,1,'red','pink');//就是在下标是1的位置删除1个元素,然后再插入两个red,pink两个元素

  alert(colors);//green,red,pink,black,blue

  splice操作的就是原有数组

  indexOf()和lastIndexOf();接受两个参数一个是要查找的元素,第二个是查找起点位置的索引,indexOf()从前往后,lastIndexOf()从后往前

迭代方法:

  every();就是迭代数组中的每一个元素,当所有元素都满足给定函数,并都返回true,则返回true

  some();就是迭代数组中的每一个元素,只要有一个元素满足给定函数,并都返回true,则返回true

  filter();就是迭代数组中的每一个元素,只要有一个元素满足给定函数,并都返回true,则返回这些项组成的数组

    var numbers = [1,2,3,4,5,5,6,7,1];

    var result = numbers.every(function(item,index,array){

      return (item>4);

    });

    alert(result);//false

    var result2 = numbers.some(function(item,index,array){

      return (item>4);

    });

    alert(result2);//true

    var result3 = numbers.filter(function(item,index,array){

      return (item>4);

    });

    alert(result3);//5,5,6,7

  map();对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组

  var numbers = [1,2,3,4,4,3,2,1];

  var results = numbers.map(function(item,index,array)){

    return item * 2;

  };

  alert(results);//2,4,6,8,8,6,4,2

  

  foreach();便利数组的每一项,对每一项执行一些自定义的操作,没有返回值

  var numbers = [1,2,3,4,4,3,2,1];

  numbers.foreach(function(item,index,array)){

    //dosomething;

  };

javascript 高级程序设计 六的更多相关文章

  1. JavaScript高级程序设计(六):关键字 void 和 delete 使用

    一.void 1.概述:JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. 2.语法:JavaScript void (express)   或则 JavaScri ...

  2. 《Javascript高级程序设计》阅读记录(六):第六章 下

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

  3. 《Javascript高级程序设计》阅读记录(五):第六章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

  4. 《JavaScript高级程序设计》学习笔记(5)——面向对象编程

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...

  5. javascript 高级程序设计 十二

    1.组合使用原型模式和构造函数模式: 由于原型模式创建对象也有它的局限性------有智慧的人就把原型模式和构造函数模式进行了组合. function Person(name, age, job){/ ...

  6. 读书笔记(06) - 语法基础 - JavaScript高级程序设计

    写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...

  7. 《Javascript高级程序设计》阅读记录(七):第七章

    <Javascript高级程序设计>中,2-7章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: < ...

  8. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

  9. 《JavaScript高级程序设计》笔记——第一章到第三章

    2019年,新年伊始,我打算好好重读一下<JavaScript高级程序设计>这本前端必备经典书.每天半小时. 以下内容摘自<JavaScript高级程序设计> 2019-2-1 ...

随机推荐

  1. debug.keystare找不到的解决办法[转]

    重装系统之后,丢失了debug.keystore,找了很久都没有找到,根据网上所讲的只要重新运行一个android项目;就会在avd中生成一个新的debug.keystroe,此法也没解决,索性直接重 ...

  2. 吴裕雄 python oracle检索数据(1)

    import cx_Oracle conn = cx_Oracle.connect("scott/admin@localhost:1521/ORCL")cursor = conn. ...

  3. 最小生成树二·Kruscal算法

    描述 随着小Hi拥有城市数目的增加,在之间所使用的Prim算法已经无法继续使用了——但是幸运的是,经过计算机的分析,小Hi已经筛选出了一些比较适合建造道路的路线,这个数量并没有特别的大. 所以问题变成 ...

  4. php原样输出被编译过的html(适用于一些保存编辑器的内容)

    有时候有些编辑器写进数据库时尖括号或双引号被编译过,这时候输入来就是处理一下,不然得不到原样的 输入用  html_entity_decode($content)就可以了,有些直接存完整html的,输 ...

  5. 初识Elasticsearch,bulk 操作的遇到的那些事

    bulk api可以在单个请求中一次执行多个文档的 create . index . update 或 delete 操作 批量操作的行为(action)必须是以下几种: 行为 解释 create 当 ...

  6. 微信小程序开发攻略

    首先,需要明确的一点是,小程序开发就是前端开发的一个小分支. 其次,小程序开发框架是一个精简版的React ,并且开发比较简单 . 第一步 获取AppId 小程序注册入口http://https:// ...

  7. C#单例和Unity单例

    单例是一种设计模式 单例:不管在项目中的任何模块,当需要使用某个对象的时候,获取到的始终是同一个对象 在C#中 public class InstanceDemo{ private static In ...

  8. linux下mysql升级

    最近漏洞扫描,扫描出了数据库存在中高危漏洞,于是迫切需要进行数据库升级.上网查了各种资料,说法很多,也到自己虚拟机上试了好多方法,终于倒腾出来,做下小总结记录一下. 升级操作: 1.到mysql官网h ...

  9. Linq to sql 之 ExecuteQuery 错误:指定的转换无效

    问题:通过dbContext.ExecuteQuery 得到数据并赋值给一个集合. 代码: public IEnumerable<LeaveCodeSum> GetLeavTotal(st ...

  10. sql 允许远程登录

    grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; flush privileges ...