引用类型之数组
javaScript语法中Array类型的特点:1.数组中的每一项可以保存任何数据;2.数组的大小可以动态调整
1.创建数组的两种基本方式:1.使用Array构造函数,2.使用数组字面量表示法
2.在读取和设置数组的值时,要使用方括号并提供相应值基于0的数字索引
3.数组的项数保存在length属性中,这个属性会返回0或者更大的值
4.数组length属性的特点:可以从数组的末尾移出项或向数组中添加新项
5.利用length属性可以方便地在数组末尾添加新项
检测:确定某个对象是不是数组
1.使用instanceof操作符检测结果
2.在全局环境中确定某个值到底是不是数组
栈是一种后进先出的数据结构,也就是最新添加的项最早移除,而栈中项的插入(叫做推入)和移除(叫做弹出)
只发生在一个位置栈的顶部,并为数组提供了push()和pop()方法,以便实现类似栈的行为
1.push()方法可以接受任意的数量的参数,把它们逐个添加到数组末尾,并返回数组的长度
2.pop()方法从数组末尾移出最后一项,减少数组的length,并返回数组的项;
所有对象都具有toLocaleString(),toString()和valueOf()方法
队列方法
队列数据结构访问的规则是:先进先出.队列在列表末端添加项从列表前端移出项
模拟队列方法: shift()方法移出数组中的第一个项并返回该项,同时将数组长度减1
unshift()方法:可以在数组前端添加任意个项并返回新数组的长度
- /*
- *----------------------------------------------5.2Array类型-------------------------------
- * javaScript语法中Array类型的特点:1.数组中的每一项可以保存任何数据;2.数组的大小可以动态调整
- * 1.创建数组的两种基本方式:1.使用Array构造函数,2.使用数组字面量表示法
- * 2.在读取和设置数组的值时,要使用方括号并提供相应值基于0的数字索引
- * 3.数组的项数保存在length属性中,这个属性会返回0或者更大的值
- * 4.数组length属性的特点:可以从数组的末尾移出项或向数组中添加新项
- * 5.利用length属性可以方便地在数组末尾添加新项
- *
- * */
- //1.1使用Array构造函数创建数组
- var createArray = new Array();
- var createArray = new Array(20);//给构造函数传递项目数量,该数量就是array的length属性
- var createArray = new Array("水浒传","西游记","三国演义","红楼梦");//向Array构造函数传递数组应该包含的项,创建一个包含3个字符串值得数组
- var createArray = Array();//省略new操作符也同样可以创建数组
- //1.2 使用数组字面量表示法,数组字面量由一对包含数组项的方括号表示,多个数组项之间以逗号隔开;
- var colors = ["red","blue","yellow","black","green"];//创建一个包含了5个字符串的数组
- var colors = []; //创建一个空数组
- var colors = [1,2];//不要这样!创建一个包含2或3个项,且值分别是:1,2,undefined
- var colors = [,,,,,];//不要这样!创建H一个包含5或6个项,且值是undefined
- //2.读取和设置数组的值时,要使用方括号并提供相应值基于0的数组索引
- var colors = ["blue","red","green"];
- console.log(colors[1]);//red
- colors[0] = "black"; //修改数组中第一项的值
- console.log(colors[0]);
- colors[3] = "yellow";//在数组中新增一项
- console.log(colors.length);
- //3.数组的项数会保存在length属性中,这个属性会返回0或者更大的值
- var colors = ["red","blue","yellow"]; //创建一个只包含3个项的数组
- var student = []; //创建一个空数组
- console.log(colors.length); //3
- console.log(student.length); //0
- //4.数组length属性可以向数组的末尾移出项或向数组中添加新项
- var colors = ["red","blue","black"];
- colors.length = 2;//移出了数组中末尾一项;
- console.log(colors[2]);//undefined
-
- colors.length = 5;//将length的属性设置为大于数组项数的值,则新增的每一项都会取得undefined值
- console.log(colors[4]); //undefined
- //5.利用length属性在末尾添加新项
- var student = ["张三","李四","王五"];
- student[student.length] = "武松";
- student[student.length] = "宋江";
- console.log(student); //["张三", "李四", "王五", "武松", "宋江"]
-
- /*
- * ***********************5.2.1 检测数组************************
- * 检测:确定某个对象是不是数组
- * 1.使用instanceof操作符检测结果
- * 2.在全局环境中确定某个值到底是不是数组
- * */
- //1.使用instanceof操作符检测结果
- if (value instanceof Array){
- //对数组执行某些操作
- }
- //2.在全局环境中确定某个值到底是不是数组
- if(Array.isArray(value)){
- //对数组执行某些操作
- }
-
- /*
- * ********************5.2 转换方法*********************
- *所有对象都具有toLocaleString(),toString()和valueOf()方法
- *
- * */
- var colors = ["red","blue","yellow"];
- console.log(colors.toString());//red,blue,yellow 表示返回数组的字符串,每个值得字符串表示拼接成一个字符串
- console.log(colors.valueOf());//["red", "blue", "yellow"]
- console.log(colors);//["red", "blue", "yellow"]
- /*
- * ****************************5.2.3 栈方法********************
- * 栈是一种后进先出的数据结构,也就是最新添加的项最早移除,而栈中项的插入(叫做推入)和移除(叫做弹出)
- * 只发生在一个位置栈的顶部,并为数组提供了push()和pop()方法,以便实现类似栈的行为
- * 1.push()方法可以接受任意的数量的参数,把它们逐个添加到数组末尾,并返回数组的长度
- * 2.pop()方法从数组末尾移出最后一项,减少数组的length,并返回数组的项;
- *
- * */
- //1.push()方法可以接受任何数量的参数,把它们逐个添加到数组末尾,并返回数组的长度
- var colors = new Array();//创建一个数组
- var count = colors.push("red","blue");//向数组中推入这两项
- console.log(count);//2 表示返回数组的长度
- console.log(colors); //["red", "blue"]
- var count = colors.push("black"); //继续推入另一项
- console.log(count); //3
- console.log(colors);//["red", "blue", "black"]
-
- //2.pop()方法从数组末尾移除最后一项,减少数组的length,并返回数组的项数
- var colors = ["red","blue","yellow"];
- var item = colors.pop();//取出最后一项
- console.log(item);//yellow
- console.log(colors);//["red", "blue"]
-
- /*
- * ************************5.2.4队列方法***************
- * 队列数据结构访问的规则是:先进先出.队列在列表末端添加项从列表前端移出项
- * 模拟队列方法:shift()方法移出数组中的第一个项并返回该项,同时将数组长度减1
- * unshift()方法:可以在数组前端添加任意个项并返回新数组的长度
- * */
- //1.模拟队列方法shift()方法
- var colors = new Array();
- var count = colors.push("red","blue");//向数组中推入两项
- console.log(colors,count);//["red", "blue"] 2
- var item = colors.shift();
- console.log(colors,item,colors.length);//["blue"] "red" 1
-
- //unshift方法
- var colors = new Array();
- var count = colors.unshift("red","green");
- console.log(colors,count); //["red", "green"] 2
- /*
- * *************************5.2.5重排序方法********************
- * 1.reverse()方法反转数组项的顺序
- * 2.sort()方法按升序排列数组项
- * */
- //1.reverse()反转数组项的顺序
- var student = ["武松","宋江","鲁智深"];
- student.reverse();//反转了数组的顺序
- console.log(student);//["鲁智深", "宋江", "武松"]
- //2.sort()方法按升序排列数组项
- var values = [11,2,3,24,5,6];
- values.sort(); //[11, 2, 24, 3, 5, 6]
- //比较函数的说明:如果两个函数参数a,b;a>b则返回一个负数,a<b则返回一个正数,a=b则返回一个0;(从大到小的比较规则)
- function compare(value1,value2) {
- if(value1<value2){
- return -1; //在之前
- } else if(value1 > value2){
- return 1; //在之后
- }else {
- return 0; //相等
- }
- }
-
- values.sort(compare);//
- values.sort(
- function (a,b){
- return a-b;//升序
- }
- ) ;
- //
-
- values.sort(
- function (a,b){
- return b-a;//降序
- }
- )
-
- //
- var values = [11,2,3,24,5,6];
- function compare(value1,value2){
- return value2 -value1;
- }
- values.sort(compare)