引用类型之Array类型

Array类型

ECMAScript数组与其它语言数组一样,都是数据的有序列表。但是ECMAScript数组的每一项可以保存任何类型的数据。而且,ECMAScript数组是可以动态调整的。

1.创建和修改数组

·创建数组

1 var colors=new Array(20);      //创建长度位20的数组
2 var colors=Array(20);             //可以省略new操作符
3 var colors=Array("red","blue","green");
4
5 //数组字面量表示法
6 var colors=["red","blue","green"];
7 var values=[1,2,3];

·修改数组

1 var colors=["red","blue","green"];
2 alert(colors[0]);                                 //显示第一项
3 colors[2]="black";                             //修改第三项
4 colors[3]="brown";                           //新增第四项

·数组的length活用

数组的length不是只读的,重新设置length可以移出项,修改项,新增项,修改数组的长度。

2.检测数组----Array.isArray()

3.转换方法

toString():返回以逗号隔开的字符串     丨     valueOf():返回的是数组       丨      alert():会在后台调用toString()方法,而不是toLocaleString()方法     丨      join():参数是符号,此符号将代替逗号隔开字符串

4.栈方法和队列方法

栈方法:push():在末尾添加      pop():获得最后一项并移除

队列方法:shift():在首项移除       unshift():在首项添加

5.数组重排序

reverse()方法:反转数组的顺序     丨     sort()方法:按照传入的函数重新排序

比较函数:

1 function compare(value1,value2){
2 return value2-value1;
3 };

6.操作方法

concat():先复制已有的数组,然后将参数添加到副本的末尾,如果参数是值,则直接添加,如果参数是数组,则将每一项都添加到副本的末尾。往一个数组后面加很多项用此方法。

1 var colors=["red","green","blue"];
2 var colors2=colors.concat("yellow",["black","brown"]);
3 alert(colors);                                            //red,green,blue
4 alert(colors2);                                           //red,green,blue,yellow,black,brown

slice():从原数组中截取某一部分用此方法

1 var colors=["red","blue","green","black","yellow"];
2 var colors2=colors.slice(1);                        //从第二个数到最后
3 var colors3=colors.slice(1,4);                      //从第二个数到第五个数,但是不包括第五个数
4 alert(colors2);                                     //blue,green,black,yellow
5 alert(colors3);                                     //blue,green,black
6                                                     //如果参数里有负数,则用数组长度加上该数来确定相应的位置

splice():最强大的数组操作方法

 1 /*spice()方法是最强大的数组方法,它有三个参数 ,依次为起始位置,要删除的项数,要添加的项*/
 2 var colors=["red","green","blue"];
 3 var removed=colors.splice(0,1);                        /*删除第一行*/
 4 alert(colors);                                         /*green,blue*/
 5 alert(removed);                                        /*red,返回的数组中只包含一项,即删除的那一项*/
 6
 7 removed=colors.splice(1,0,"yellow","orannge");        //从位置一开始插入两项
 8 alert(colors);                                        //green,yellow,orange,blue注意,yellow在位置1
 9 alert(removed);                                       //返回的是一个空数组
10
11 removed=colors.splice(1,1,"red","purple");            //插入两项,删除一项
12 alert(colors);                                        //green,red,purple,orange,blue
13 alert(removed);                                       //yellow,返回的数组中只包含一项
14 /*注意,splice()返回的是删除的项,而不是改变后的原数组*/

7.迭代方法

every():每一项运行函数,只有每一项都返回true,最后才返回true

some():每一项都运行函数,任一项返回true最后就会返回true

forEach():不会返回值,作用其实和for循环一样

filter():每一项运行函数,返回该函数会返回true的项组成的数组

map():每一项都运行函数,返回每次函数调用的结果组成的数组

 1 /*every()和some()返回true或者false,不同的是,运行函数,every要求函数对每一项都返回true才会返回true,而some只要求任一项返回true就返回true*/
 2 var numbers=[1,2,3,4,5,4,3,2,1];
 3
 4 var everyResult=numbers.every(function(item,index,array){
 5     return(item>2);
 6 });
 7 alert(everyResult);            //false
 8
 9 var someResult=numbers.some(function(item,index,array){
10     return(item>2);
11 });
12 alert(someResult);             //true
13
14 /*filter()每一项运行函数,返回该函数会返回true的项组成的数组*/
15 var numbers=[1,2,3,4,5,4,3,2,1];
16 var filterResult=numbers.filter(function(item,index,array){
17     return(item>2);
18 });
19 alert(filterResult);           //[3,4,5,4,3]
20
21 /*forEach()不返回值,作用其实for循环一样*/
22
23 /*map()方法:每一项运行函数,返回每次函数调用的结果组成的数组*/
24 var numbers=[1,2,3,4,5,4,3,2,1];
25 var mapNumbers=numbers.map(function(item,index,array){
26     return item*2;
27 });
28 alert(mapNumbers);             //2,4,6,8,10,8,6,4,2

8.归并方法

reduce()和reduceRight()方法都会迭代数组的每一项,然后构建一个最终返回的值。reduce()正序,reduceRight()逆序。这两个方法都接收两个参数:在每一项上调用的函数和最为归并的初始值。而这个函数接收4个参数

前一个值,当前值,项的索引和数组对象。这个函数返回的任何值都会作为一个参数返回给下一项。第一次迭代发生在数组的第二项,因此,第一个参数是数组的第一项,第二个参数是数组的第二项。

1 var values=[1,2,3,4,5];
2 var sum=values.reduce(function(prev,cut,index,array){
3     return prev+cut;
4 },5);
5 alert(sum);          //20
6 /*这两个方法都接收两个参数:一个在每一项上调用的函数和(可选)作为归并基础的初始值。传给reduce()和reduceRight()的函数接收4个参数
7  前一个值,当前值,项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项。因此第一个参数是数组的第一项
8  第二个参数是数组的第二项。
9  * */

9.位置方法

indexOf():正序索引          lastIndexOf():逆序索引          在比较参数和数组中的项时,必须严格相等,相当于使用===操作符,没有找到返回-1

 1 var numbers=[1,2,3,4,5,4,3,2,1];
 2 alert(numbers.indexOf(4));                 //3
 3 alert(numbers.lastIndexOf(4));              //5
 4
 5 alert(numbers.indexOf(4,4));               //5  从第五的数开始往后检索,所以第一个4并没有被检索到
 6 alert(numbers.lastIndexOf(4,4));           //3  从倒数第五个数开始检索
 7
 8 var person={name:"Nicholas"};
 9 var people=[{name:"Nicholas"}];
10
11 var morePeople=[person];
12
13 alert(people.indexOf(person));            //-1
14 alert(morePeople.indexOf(person));          //0
时间: 2024-10-10 00:25:07

引用类型之Array类型的相关文章

浅谈JS引用类型之Array类型

最近看了一下红皮书,就整理一下,提炼一下里面的知识点! 创建方式 先从数组的创建方式说起,有两种创建方式 一种是:var arr = new Array (); 可以给构造函数传参数,如果只传一个参数,并且这个参数是数值,那么就创建该数值大小的数组,其他情况就是创建包含这些参数的数组 另一种是:var arr = []; 数组的每一项都是可以保存任何类型的数据的,var arr = [1,"hello",true,{a:1}];但是不推荐保存不同类型的值 length属性 1.它的值永

【引用类型】Array 类型

ECMAScript 数组可以保存任何类型的数据.数组最多包含 4294967295 个值 创建数组 1. 使用 Array 构造函数 1 <script> 2 //创建数组 arr1 3 var arr1 = new Array(); 4 //创建数组 arr2 , 数组length属性值为20 5 var arr2 = new Array(20); 6 //创建数组 arr3, 数组包含 3 个字符串值 7 var arr3 = new Array("red",&quo

js引用类型之Array类型

第一种是使用Array()构造函数,如下所示: var array=new Array(); 第二种是使用数组字面量表示法.由一组包含数组项的方括号表示,多个数组之间以逗号隔开.如下所示: var array =["red","blue","black"]; 在数组中length属性不只是可读的,通过设置这个属性,可以在数组末尾添加或者删除数据 var bb = ["zd","zk","zl&qu

js 引用类型之Array类型

//1.concat() 方法 不会改变原数组,会复制一个原数组的副本进行拼接 var arr = ['red', 'zhansan', 'xin']; var arr2 = arr.concat('2', ['3', '9']); console.log(arr); //[ 'red', 'zhansan', 'xin' ] console.log(arr2); //[ 'red', 'zhansan', 'xin', '2', '3', '9' ] //2.slice() 方法 不会改变原数

引用类型-Array类型~ 前端学习之路

今天开始记录每天所学的重点,为了加深印象也为了今后的复习. 今天学习的重点是引用类型中Array类型,Array类型中的栈方法,队列方法,重排序方法,操作方法,位置方法,迭代方法,归并方法.这几个方法我感觉尤为重要,因此记录下来,以便忘记了可以回顾. (一)栈方法 首先要知道的是栈是一种后进先出的数据结构,也就是最先添加的项最先移除.在JS中提供有两种方法,push()和pop()方法是实现类似于栈的行为. push()方法可以接受任意数量的参数,并且把它们放在数组的末尾,最后返回修改后数组的长

JavaScript的进阶之路(三)引用类型之Object类型和Array类型

引用类型 Object类型 function a(num){ if(num>3){ a(--num); } console.log(num); } a(5); //如何创建对象的实例 var obj1= new Object(); console.log(obj1); obj1.name="吴琼"; obj1.age=28; console.log(obj1.name+" "+obj1.age); //对象字面量语法 ,有点封装的感觉 var obj2 = {

JavaScript基础——引用类型(一)Object类型、Array类型

引用类型简介 引用类型的值(对象)是引用类型的一个实例.在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当(虽然不妥当,在别人提起的时候,就是指ECMAScript中的引用类型,在一次面试的时候,有人就和面试官争论说"JS中没有'类'这个概念,结果可想而知--").尽管ECMAScript从技术上讲是一门面向对象的语言,但它不举杯传统的面向对象语言所支持的类和接口等基本结构.引用类型有时候也被称为对象定义,因为它们描述的是一

引用类型--Object类型、Array类型

引用类型的值(对象)是引用类型的一个实例.在ECMAScript中,引用类型是一种数据结构,它描述的是一类对象具有的属性和方法. 对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数来创建的. Object类型 大多数引用类型值都是Object类型的实例,Object是ECMAScript中使用最多的一个类型.Object的实例不具备多少功能,但对于在应用程序中存储和传输数据而言,是非常理想的选择. 创建Object实例的方式有两种: 第一种是使用new操作符后跟Object构

JS引用类型(2)——Array类型

[2]Array类型ECMAScript数组的每一项可以保存任何类型的数据,并且大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据. (1)创建数组 1>使用Array构造函数 var colors = new Array(); var colors = new Array(20); var colors = new Array("red","blue","green"); var colors = Array(3); var