由于自己在对数组操作这块比较薄弱,然后经高人指点,需要好好的攻读一下这本书籍,原本想这个书名就比较高深,这下不好玩了。不过看着看着突然觉得讲的东西都比较基础。不过很多东西,平时还是没有注意到,故写出读书笔记和诸君共勉!

第二张

2.2.1 创建一个数组

  1. 创建数组的方式有?那种比较高效?原因是?
  2.  
  3. 第一种模式
  1. var nums = [];
  1. var numbers = [1,2,3,4,5];
    console.log(numbers.length)//5
  1.  
  2. 第二种模式
  3.  
  4. var nums = new Array[];
  1. var numbers = new Array(10);
  1. console.log(numbers.length)//10
  1.  
  2. 从效率上说 第一种[]这个的效率更高
  3.  
  4. 判断一个对象是否是数组:可以调用Array.isArray();
  1. 第三种模式
    参见2.2.3
  2.  

2.2.2 读写数组

  1. var numbers = [1,2,3,4,5];
  2. var sum=0;
  3. if (Array.isArray(numbers)) {
  4. // perform array tasks on numbers
  5. sum=numbers[0]+numbers[1]+numbers[2]+numbers[3]+numbers[4];
  6. console.log(sum);//15
  7. }
  8.  
  9. 当然更好的求和方案是用for循环,数组固有属性
  1. numbers.length

2.2.3 由字符串生成数组

  1. var sentence = "the quick brown fox jumped over the lazy dog";
  2. var words = sentence.split(" ");//根据空格分组
  3. for (var i = 0; i < words.length; ++i) {
  4. print("word " + i + ": " + words[i]);
  5. }
    //结果参见下图

2.2.3 对数组的整体性操作

  1. //浅复制:
  2. var nums=[1,2,3];
  3. var samenums=nums;
  4.  
  5. nums[0]=0;
  6. console.log(samenums[0]); //0 这里是0,而不是复制过来时候的1.
  7.  
  8. //深复制
  1. for(var i=0;i<nums.length;i++){
  2. samenums[i]=nums[i];
  3. }
  4.  
  5. //这时候我们再:
    nums[0]=0;
  6. console.log(samenums[0]) //1,这里依旧是1.
  1.  

以上代码参见:http://www.cnblogs.com/zqzjs/p/5410138.html

2.3.1 查找元素

  

  1. indexOf();
  1. var names = ["David","Cynthia","Raymond","Clayton","Jennifer"];
  2. //putstr("Enter a name to search for: ");
  3. var name ="Clayton";
  4. var position = names.indexOf(name);
  5. if (position >= 0) {
  6. console.log("Found " + name + " at position " + position);
  7. }
  8. else {
  9. console.log(name + " not found in array.");
  10. }
  11. //Found Clayton at position 3

2016-04-25

2.3.1 数组的字符串表示

  1. 有两个方法可以将数组转化为字符串: join() toString() 。这两个方法都返回一个包含
  2. 数组所有元素的字符串,各元素之间用逗号分隔开。下面是一些例子:
  3. var names = ["David", "Cynthia", "Raymond", "Clayton", "Mike", "Jennifer"];
  4. var namestr = names.join();
  5. print(namestr); // David,Cynthia,Raymond,Clayton,Mike,Jennifer
  6. namestr = names.toString();
  7. print(namestr); // David,Cynthia,Raymond,Clayton,Mike,Jennifer
  8. 事实上,当直接对一个数组使用 print() 函数时,系统会自动调用那个数组的 toString()
  9. 方法:
  10. print(names); // David,Cynthia,Raymond,Clayton,Mike,Jennifer

2.3.3 由已有数组创建新数组

  1. concat() splice() 方法允许通过已有数组创建新数组。 concat 方法可以合并多个数组
  2. 创建一个新数组, splice() 方法截取一个数组的子集创建一个新数组。
  3. 我们先来看看 concat() 方法的工作原理。该方法的发起者是一个数组,参数是另一个数
  4. 组。作为参数的数组,其中的所有元素都被连接到调用 concat() 方法的数组后面。下面的
  5. 程序展示了 concat() 方法的工作原理:
  6. var cisDept = ["Mike", "Clayton", "Terrill", "Danny", "Jennifer"];
  7. var dmpDept = ["Raymond", "Cynthia", "Bryan"];
  8. var itDiv = cis.concat(dmp);
  9. print(itDiv);
  10. itDiv = dmp.concat(cisDept);
  11. print(itDiv);
  12. 输出为:
  13. Mike,Clayton,Terrill,Danny,Jennifer,Raymond,Cynthia,Bryan
  14. Raymond,Cynthia,Bryan,Mike,Clayton,Terrill,Danny,Jennifer
  15. 第一行首先输出 cis 数组里的元素,第二行首先输出 dmp 数组里的元素。

2.4 可变函数

2.4.1 为数组添加元素

  1. /**
  2. * 请用浏览器的控制台直接拷贝运行分段测试
  3. * @type {number[]}
  4. */
  5. //Test1
  6. var nums = [1,2,3,4,5];
  7. console.log(nums); // 1,2,3,4,5
  8. nums.push(6);
  9. console.log(nums);
  10.  
  11. //Test2
  12. //unshift() 方法可以将元素添加在数组的开头,下述代码展示了该方法的用法:
  13. var nums = [2,3,4,5];
  14. console.log(nums); // 2,3,4,5
  15. var newnum = 1;
  16. nums.unshift(newnum);
  17. console.log(nums); // 1,2,3,4,5
  18. nums = [3,4,5];
  19. nums.unshift(newnum,1,2);
  20. console.log(nums); // 1,2,3,4,5

2.4.2 从数组中删除元素

  1. 使用 pop() 方法可以删除数组末尾的元素:
  2. var nums = [1,2,3,4,5,9];
  3. nums.pop();
  4. print(nums); // 1,2,3,4,5
  5. 如果没有可变函数,从数组中删除第一个元素需要将后续元素各自向前移动一个位置,和
  6. 在数组开头添加一个元素一样低效:
  7. var nums = [9,1,2,3,4,5];
  8. print(nums);
  9. for (var i = 0; i < nums.length; ++i) {
  10. nums[i] = nums[i+1];
  11. }
  12. print(nums); // 1,2,3,4,5,
  13. 除了要将后续元素前移一位,还多出了一个元素。当打印出数组中的元素时,会发现最后
  14. 多出一个逗号。
  15. shift() 方法可以删除数组的第一个元素,下述代码展示了该方法的用法:
  16. var nums = [9,1,2,3,4,5];
  17. nums.shift();
  18. print(nums); // 1,2,3,4,5
  19. 这回数组末尾那个多余的逗号消失了。 pop() shift() 方法都将删掉的元素作为方法的
  20. 返回值返回,因此可以使用一个变量来保存删除的元素:
  21. var nums = [6,1,2,3,4,5];
  22. var first = nums.shift(); // first gets the value 9
  23. nums.push(first);
  24. print(nums); // 1,2,3,4,5,6

 2.4.4 为数组排序

  1. 剩下的两个可变方法是为数组排序。第一个方法是 reverse() ,该方法将数组中元素的顺
  2. 序进行翻转。下面这个例子展示了该如何使用该方法:
  3. var nums = [1,2,3,4,5];
  4. nums.reverse();
  5. print(nums); // 5,4,3,2,1
  6. 对数组进行排序是经常会遇到的需求,如果元素是字符串类型,那么数组的可变方法
  7. sort() 就非常好使:
  8. var names = ["David","Mike","Cynthia","Clayton","Bryan","Raymond"];
  9. names.sort();
  10. print(names); // Bryan,Clayton,Cynthia,David,Mike,Raymond
  1. 但是如果数组元素是数字类型, sort() 方法的排序结果就不能让人满意了:
  2. var nums = [3,1,2,100,4,200];
  3. nums.sort();
  4. print(nums); // 1,100,2,200,3,4
  5. sort() 方法是按照字典顺序对元素进行排序的,因此它假定元素都是字符串类型,在上一
  6. 个例子中,即使元素是数字类型,也被认为是字符串类型。为了让 sort() 方法也能排序数
  7. 字类型的元素,可以在调用方法时传入一个大小比较函数,排序时, sort() 方法将会根据
  8. 该函数比较数组中两个元素的大小,从而决定整个数组的顺序。
  9. 对于数字类型,该函数可以是一个简单的相减操作,从一个数字中减去另外一个数字。如
  10. 果结果为负,那么被减数小于减数;如果结果为 0,那么被减数与减数相等;如果结果为
  11. 正,那么被减数大于减数。
  12. 将这些搞清楚之后,传入一个大小比较函数,再来看看前面的例子:
  13. function compare(num1, num2) {
  14. return num1 - num2;
  15. }
  16. var nums = [3,1,2,100,4,200];
  17. nums.sort(compare);
  18. print(nums); // 1,2,3,4,100,200
  19. sort() 函数使用了 compare() 函数对数组按照数字大小进行排序,而不是按照字典顺序。

<style><!--
body{background: #000000!important;color: #ffffff!important;}
div{background: #000000!important;}
p{background: #000000!important;color: #ffffff!important;;font-size: 15px!important;}
span{background: #000000!important;color: #ffffff!important;;font-size: 14px!important;}
--></style>

 

数据结构与算法JavaScript 读书笔记的更多相关文章

  1. 《java数据结构和算法》读书笔记

    大学时并不是读计算机专业的, 之前并没有看过数据结构和算法,这是我第一次看.         从数据结构方面来说:                数组:最简单,遍历.查找很快:但是大小固定,不利于扩展 ...

  2. 数据结构与算法JavaScript (一) 栈

    序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...

  3. 《数据结构与算法JavaScript描述》

    <数据结构与算法JavaScript描述> 基本信息 作者: (美)Michael McMillan 译者: 王群锋 杜欢 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9 ...

  4. 翻阅《数据结构与算法javascript描述》--数组篇

    导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...

  5. 数据结构与算法javascript描述

    <数据结构与算法javascript描述>--数组篇 导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScri ...

  6. 列表的实现-----数据结构与算法JavaScript描述 第三章

    实现一个列表 script var booklist = new List(); booklist.append('jsbook'); booklist.append('cssbook'); book ...

  7. 《数据结构与算法JavaScript描述》中的一处错误

    最近在看<数据结构与算法JavaScript描述>这本书,看到选择排序这部分时,发现一个比较大的错误. 原书的选择排序算法是这样的: function selectionSort() { ...

  8. 数据结构与算法 Javascript描述

    数据结构与算法系列主要记录<数据结构与算法 Javascript描述>学习心得

  9. 读后感:数据结构与算法JavaScript描述

    本书看完,对常见的数据结构与算法从概念上有了更深入的理解. 书中关于数组.栈和队列.链表.字典.散列.集合.二叉树.图.排序.检索.动态规划.贪心算法都有详细的介绍.算是一本不错的学习书籍. 栈和队列 ...

随机推荐

  1. VS2010如何调试IIS上的网站

    通常,我们在Visual Studio里调试ASP.NET网站,都是加个断点,然后按F5,在VS自带的虚拟服务器下调试的.但有时候,VS自带的服务器弱爆了,无法满足一些特定情况的要求,我们必须把网站放 ...

  2. 一致性哈希算法原理及Java实现

     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单 ...

  3. How to get FlowLayoutPanel.AutoSize to work with FlowBreak

    have a problem with a FlowLayoutPanel and I don't know how to solve it. I'm placing two FlowLayoutPa ...

  4. The Task: Events, Asynchronous Calls, Async and Await

    The Task: Events, Asynchronous Calls, Async and Await Almost any software application today will lik ...

  5. 【CSS3】Advanced5:At Rules:@import, @media, and @font-face

    1.@import bolt another stylesheet onto your existing one. @import url(**.css); must be placed at the ...

  6. HDOJ-ACM1005(JAVA)

    转载声明:原文转自http://www.cnblogs.com/xiezie/p/5502918.html JAVA语言实现: 拿到题目第一反应是简单地实现递归: import java.util.* ...

  7. json里的日期字符串 怎么 转换成 javascript 的 Date 对象?

    “/Date(1232035200000)/” 怎么转换成  javascript 的 Date 对象 做法:new Date(+/\d+/.exec(value)[1]); value就是json字 ...

  8. 解析Systemtap

    SystemTap 的架构 让我们深入探索 SystemTap 的某些细节,理解它如何在运行的内核中提供动态探针.您还将看到 SystemTap 是如何工作的,从构建进程脚本到在运行的内核中激活脚本. ...

  9. 更改cmd语言(chcp)

    chcp 437 更改为英文 chcp 936 更改为简体中文 mode con cp select=437 mode con cp /status chcp cmd /c "chcp 43 ...

  10. android 读取用户号码,手机串号,SIM卡序列号

    简介: IMSI:international mobiles subscriber identity国际移动用户号码标识,这个一般大家是不知道,GSM必须写在卡内相关文件中:MSISDN:mobile ...