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类型的更多相关文章

  1. javascript高级程序设计读书笔记

    第2章  在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...

  2. JavaScript高级程序设计-读书笔记(1)

    第1章 JavaScript简介 JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成: l        ECMAScript:提供核心语言功能: l        文 ...

  3. javascript高级程序设计读书笔记----引用类型

        Array类型. ECMAScript数组的每一项可以保存任何类型的数据. 数组大小是可以动态调整的. 创建数组第一种基本方式方式: 使用Array构造函数 var colors = new ...

  4. javascript高级程序设计读书笔记-事件(一)

    读书笔记,写的很乱   事件处理程序   事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别  没有DOM1 同样的事件 DOM0会顶掉html事件   因为他们都是属性  而 ...

  5. javascript高级程序设计 读书笔记2

    第五章 引用类型 对象是引用类型的实例,引用类型是一种数据结构,将数据和功能组织在一起.描述的是一类对象所具有的属性和方法.对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数俩创建 ...

  6. Javascript高级程序设计读书笔记(第六章)

    第6章  面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...

  7. JavaScript高级程序设计-读书笔记(7)

    第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...

  8. JavaScript高级程序设计-读书笔记(3)

    第8章 BOM 1.window对象 (1)全局作用域 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象既是通过JavaScript访问浏览器窗口的一个接口,又是E ...

  9. javascript高级程序设计 读书笔记1

    第二章  在HTML中使用JS 加载JS有三种:行内,head头部和外部链接JS   最好使用外部链接<script src="example.js" ></sc ...

随机推荐

  1. Docker 在 centos 7上升级

    Docker 在 centos 7上升级 狂暴的蚂蚁 关注 2017.05.22 10:49* 字数 194 阅读 3253评论 0喜欢 1 引子 如果有旧的Docker 先删除 旧Docker版本上 ...

  2. 页面跳转到Area区域连接

    @Html.ActionLink("主页", "Index", new { controller = "Test", Action = &q ...

  3. JS的部分部分疑问和小结

    2015/9/1 1.在字符串中没有可以所需要查找的"X"的时候,返回的值  java:lastIndexof -1  js: IndexOf undefined... 2015/ ...

  4. python3 requests库学习笔记(MOOC网)

    奏:HTTP协议对资源的操作 方法说明:GET 请求获取URL位置的资源HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息POST 请求向URL位置的资源后附加新的数据PUT 请求 ...

  5. services - Internet 网络服务列表

    DESCRIPTION(描述) services 是一个普通的 ASCII 码文件, 它在 internet 服务的友好原文名以及这些服务预先分配的端口和协议类型之间提供了映射. 每个联网程序必须查找 ...

  6. mysql安装与修改密码

    数据库基本概念:数据的仓库 数据库服务器-->数据库-->表-->记录-->属性(列,字段) unix下数据库服务安装: apt-get install -y mysql-se ...

  7. Java集合体系结构(List、Set、Collection、Map的区别和联系)

    Java集合体系结构(List.Set.Collection.Map的区别和联系) 1.Collection 接口存储一组不唯一,无序的对象 2.List 接口存储一组不唯一,有序(插入顺序)的对象 ...

  8. 属性.native用于解决第三方el组件库@click事件无效

    描述 有时发现用一些第三方的组件库时,例如一个封装好的button按钮<el-butten>,绑定点击事件却没有任何作用,这时便需要加 .native 原因: v-on 是对 Vue 的事 ...

  9. Java Thread之start和run方法的区别

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11421515.html start 用start方法来启动线程,真正实现了多线程运行,这时无需等待ru ...

  10. Struts拦截器Interceptor

    Struts2 拦截器 [Interceptor] 拦截器的工作原理如上图,每一个Action请求都包装在一系列的拦截器的内部.拦截器可以在Action执行直线做相似的操作也可以在Action执行直后 ...