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


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

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

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

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

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

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

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

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

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

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. js高级-浏览器事件循环机制Event Loop

    JavaScript 是队列的形式一个个执行的 同一时间只能执行一段代码,单线程的  (队列的数据结构) 浏览器是多线程的 JavaScript执行线程负责执行js代码 UI线程负责UI展示的 Jav ...

  2. struts2漏洞信息

    渗透篇01-struts2漏洞利用  https://blog.csdn.net/qq_38055050/article/details/79841604 Struts2著名RCE漏洞引发的十年之思  ...

  3. 深入理解hello world

    阅读目录 为什么所有东西都是从类开始的 为什么总是需要有一个“main”方法 HelloWorld的字节码 HelloWorld在JVM中是如何运行的 对于每个Java程序员来说,HelloWorld ...

  4. js 统计数组中元素的个数

    var all = "02 06 11 12 19 29 09 10 12 19 22 29 08 11 13 19 28 31 07 08 09 15 22 27 10 18 19 29 ...

  5. jquery 滚动条位置的

    $('#fixedHead').width()//div的宽度 $('#fixedHead')[0].scrollWidth//滚动条的宽度 两者的差为滚动条的宽度 var b1=$("#d ...

  6. pandas 读取大文件 read_table C-engine CParserError: Error tokenizing data

    解决办法: pd_data = pd.read_table(comment_file,header=None,encoding='utf-8', engine='python') 官网解析: engi ...

  7. 安装linux版zabbix客户端

    安装linux版zabbix客户端 一.下载客户端 查看centos系统内核版本 cat /proc/version 如上图,就选择Linux 2.6系统对应的agent版本程序 打开官网:https ...

  8. 数据持久化PlayerPrefs

    1.Unity3D中的数据持久化是以键值对的形式存储的,可以看作是一个字典 2.Unity3D中的值是通过键名来读取的,当值不存在时,返回默认值 3.在Unity中只支持int.float.strin ...

  9. 贪吃蛇 Java实现(一)

    贪吃蛇  Java实现 1.面向对象思想 1.创建antition包它是包含sanke  Ground Food类 2.创建Controller包controller类 3.创建Game包有game类 ...

  10. Chrome格式化JavaScript代码

    很多第三方插件的脚本,是压缩后的代码,甚至时动态加载的,代码只有一行. Chrome提供了格式化脚本代码的功能,方便加断点调试. 1 在Sources面板中,点击脚本名称,打开脚本源码. 2 点击左下 ...