Javascript高级程序设计--读书笔记之Array类型
1.数组的lenght属性
数组的lenght属性很有特点---他不是只读的,可以同过修改这个属性来向数组的末尾添值加或删除值,
删除值
var color = ["red", "blue", "green"];
color.length = 2;
alert(color[2]); //undefined
新增值
var colors = ["red", "blue", "green"];
colors[colors.length] = “black”; //在位置3添加一种新颜色
colors[colors.length] = "brown"; //在位置4添加一种新颜色
colors[99] = "black";
alert(colors.length); //
数组的最后一项的索引始终都是lenght-1,因此下一个新项的位置就是length,每当数组的长度发生变化时其length属性的值就会重新更新,长度值等于最后一项的索引加1,在上一个例子中,位置3到位置89都是不存在的,所以访问他们都将返回undefined,数组最多可以包含4294967295个项,如果超过这个上线就会发生异常,创建一个与这个值相近的数组,可能导致运行时间超长的脚本错误,
2.栈方法
栈是一种LIFPO(Last-In-Fast-Out,后进先出),最新添加的项被最早移除,ECMAScript为数组专门设计push()和pop()方法实现类似栈的行为
push()方法接受任意数量的参数,把他们添加到数组的末尾,并返回修改数组的长度,pop()数组末尾移除最后一项减少数组的length值,返回移除的项
3.队列方法
队列的访问规则是FIFO(Fast-In-Fast-Out,先进先出)实现这一操作方法就是shift()和push(),shift()能移除数组的第一项并返回该项,ECMAScript还为数组提供了一个unshift()顾名思义与shift()相反在数组前添加任意项并返回新长度。
3.重排方法
reveres()和sort() , reveres()会反转数组项的顺序,
var values = [1, 2, 3, 4, 5];
values.reverse();
alert(values); //5, 4, 3, 2, 1
sort()在默认的情况下会按升序排列数组项,sort()会对每一项调用 toString(),然后比较字符串确定如何排序,即使数组的每一项都是数值,最终比较的也是字符串
var values = [0, 1, 5, 10, 15];
values.sort();
alert(values); //0, 1, 10, 15, 5
sort()可以接受一个比较函数作为参数,如果第一个参数位于第二个参数之前则返回一个负数,如果两个参数相等则返回零,如果第一个参数位于第二个之后则返回一个正数,
function compare(value1, value2){
if(value1>value2){
return -1;
}else if( value2<value1){
return 1
}else{
return 0
}
}
4.操作方法
concat()方法可以基于当前数组项创建一个新数组,,在没有传递参数的情况下他只是复制当前数组并返回副本,如果传递给concat()一个或多个数组,该方法会将这些数组的每一项都添加到结果数组中,如果传递的不是数组就会简单的添加到结果数组的末尾
var color = ["red", "green", "blue"];
colors = color.concat("yellow", ["black", "brown"]);
alert(color); //red,green,blue
alert(colors); //red,green,blue,yellow.black,brown
下一个方法是slice(),他能基于当前数组一个或多个项创建一个新数组,接受两个参数,返回项的起始位置和结束位置,但不包括结束位置的项,在只有一个参数的情况下只有一个参数的情况下返回指定位置到数组结束的所有项,
var colors = ["red", "green", "blue", "black"];
var colors1 = colors.slice(1);
var colors2 = colors.slice(1,2);
alert(colors1); //green, blue, black
alert(color2); //green
如果slice()方法中有一个是负数则用数组的长度加上该数来确定相应的位置,例如在一个包含5项的数组中调用slice(-2, -1),与调用slice(3,4)的结果相同,如果结束为重小于起始位置则返回空数组
splice() 方法可以说是数组里最强大的一个方法了,主要的用途是向数组的内部插入项,但是使用这种方法的方式有三种,
删除:可以删除任意数量的项只需指定两个参数要删除的第一项的位置和要删除的项数,例如:splice(0,2)会删除数组的前两项。
插入:可以向指定的位置插入任意数量的项,只需指定三个参数,起始位置,0(要删除的项数)和要插入的项,如果要插入多个项,可以在向里传第四、第五,以至任意多个项,例如splice(2,0,"red", "green"),会从当前数组的位置2插入字符串“red”,"green".
替换:可以向指定的位置插入任意数量的项,,并且同时删除任意数量的项,只需指定三个参数,起始位置要删除项数和要插入的任意数量的项,插入的项数不必与删除的项数相同,例如splice(2,1,"green","red"),会删除数组位置的第二项,并在位置2开始插入字符串“green”,"red"
splice()方法始终返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项则返回空数组),看代码
var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1) //删除第一项
alert(colors); //green blue
alert(removed); //red 返回的数组只包含一项 removed = colors.splice(1,0,"yellow", "orange"); //从1的位置开始插入两项
alert(colors); //green,yellow,orange,blue
alert(removed); // 返回一个空数组 removed = colors.splice(1,1,"red","purple"); //插入两项删除一项
alert(colors); //green,red,purplr,orange,blue
alert(removed); //yellow
一句话总结splice()方法, 接受“三个”参数,起始位置, 要删除的项数(可以为0不删除),要插入的值(任意项)
Javascript高级程序设计--读书笔记之Array类型的更多相关文章
- javascript高级程序设计读书笔记
第2章 在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...
- JavaScript高级程序设计-读书笔记(1)
第1章 JavaScript简介 JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成: l ECMAScript:提供核心语言功能: l 文 ...
- javascript高级程序设计读书笔记----引用类型
Array类型. ECMAScript数组的每一项可以保存任何类型的数据. 数组大小是可以动态调整的. 创建数组第一种基本方式方式: 使用Array构造函数 var colors = new ...
- javascript高级程序设计读书笔记-事件(一)
读书笔记,写的很乱 事件处理程序 事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别 没有DOM1 同样的事件 DOM0会顶掉html事件 因为他们都是属性 而 ...
- javascript高级程序设计 读书笔记2
第五章 引用类型 对象是引用类型的实例,引用类型是一种数据结构,将数据和功能组织在一起.描述的是一类对象所具有的属性和方法.对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数俩创建 ...
- Javascript高级程序设计读书笔记(第六章)
第6章 面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...
- JavaScript高级程序设计-读书笔记(7)
第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...
- JavaScript高级程序设计-读书笔记(3)
第8章 BOM 1.window对象 (1)全局作用域 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象既是通过JavaScript访问浏览器窗口的一个接口,又是E ...
- javascript高级程序设计 读书笔记1
第二章 在HTML中使用JS 加载JS有三种:行内,head头部和外部链接JS 最好使用外部链接<script src="example.js" ></sc ...
随机推荐
- POJ 2112 /// 最大流+floyd+二分
题目大意: 有 k台挤奶机 和 c头奶牛 每台挤奶机最多为m头奶牛服务 给定所有挤奶机和奶牛两两之间的距离 求一种分配 使得 奶牛与挤奶机之间的最远距离 最小化 floyd求得所有挤奶机与奶牛两两之间 ...
- Java小游戏
这是一个飞机躲避子弹的小游戏,其中有许多干货 这是蒟蒻我第二次做,请各位大佬多多指教 目录 1.游戏主窗口的创建 2.图形绘制_文本绘制_颜色改变_图像对象的加载 3.线程内部类实现动画 4.游戏物体 ...
- jsp与httpservlet的微小区别
2015-8 jsp与httpservlet的微小区别: jsp默认支持会话,httpservlet默认不支持会话:jsp: 可以直接通过session引用httpservlet对象httpservl ...
- 【转】 linux下配置squid 服务器,最简单使用方式
linux下配置squid 1.什么是squid Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器.Squid有广泛的用途,从作为网 ...
- 【知识强化】第五章 传输层 5.2 UDP协议
这节课我们来学习一下UDP协议. 那在上节课呢我们学了这样一个打油诗. 啊,就是传输层有两个好兄弟,大哥TCP和二弟UDP.大哥很靠谱,二弟不靠谱.那只要说到UDP协议我们就要知道它的一个重要的特点, ...
- Video Mode Timings
A monitor draws an image on the screen by using an electron beam (3 electron beams for color models, ...
- shell 中cut
和awk差不多的功能 上面的例子中,把 root:x:0:0:root:/root:/bin/bash 重定向到cut命令里,-d表示分隔符,这里使用冒号: 作为分隔符,-f 表示字段,选择了第1,和 ...
- 禁用usb是否一种方法?
CM_Request_Device_EjectW?? ddk sdk必须安装 https://blog.csdn.net/phmatthaus/article/details/49779585
- (PASS)PLSQL激活
注册码: Product Code(产品编号):4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz serial Number(序列号):601769 password(口令):xs ...
- 【QT学习】数独游戏
前几天刷leetcode刷到一题,讲sudokuSolver,写完感觉很有意思,遂想做一个数独游戏,百度了一下如何自动生成题库,参考某位大神安卓下的实现思路,自己做了一套文字版的数独游戏,后来想乘机会 ...