`
快乐_虫
  • 浏览: 7052 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

javaScript基础之——数组

阅读更多
数组是复合数据类型(对象类型)的数据,它的数据索引为数字,从0开始,逐一递增,有个length属性,代表数组项的总数。数组的每一项可以存任何类型的数据,并不是数组就只可以存Number类型的数据哦。
当我们用for in 语句 遍历数组的时候,length属性并不会被遍历出来。
 
创建数组的方法
var arr = new Array( );       //创建一个空数组
var arr = new Array(size);      // size-数组的长度,ex.size=3,创建一个有3个元素的数组,元素为undefined
var arr = new Array(element0, element1, ..., elementn);     //  用参数指定的值初始化数组,以逗号分隔
var arr = [];    //直接量的方式创建一个空数组,和第一个创建数组的方法同效
var arr = [element0, element1, ..., elementn];    // 直接量的方式创建数组,同上面第三个创建方式
 
 
数组的内置方法
  
数组首尾位置的数据项添加及删除方法
array.push()                               
array.pop()                                 
array.unshift()                            
array.shift()                                
//添加的都返回数组的length属性值
//删除的都返回删除项的值
 
array.push( value,… ) --- 向数组的尾部添加值
参数:value可以是一个或多个(不传参数好像也没报错)
功能方法push()将把它的参数顺次添加到array的尾部
返回值:把指定的值添加到数组后的新长度
是否修改原数组:是!---直接修改array,而不是创建一个新的数组。
扩展:方法push()和方法pop()用数组提供先进后出栈的功能。
Bug:在JavaScript的Netscape实现中,如果把语言版本明确地设置为1.2,该函数将返回最后添加的值,而不是返回新数组的长度。
 
array.unshift( value,… ) --- 在数组头部插入一个元素
参数:value是要插入到数组头部的一个或多个(不传参数好像也没报错)
功能方法unshift()将它的参数插入array的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间该方法的第一个参数将成为数组新的元素0,如果还有第二个参数,它将成为新的元素1,以此类推。
返回值:把指定的值添加到数组后的新长度
是否修改原数组:是!---unshift()直接修改原有的数组,而不是创建一个新的数组。
 
示例:
var a = [];             // a:[]
a.unshift(1);           // a:[1]          返回 1
a.unshift(22);          // a:[22,1]       返回 2
a.unshift(33,[4,5]);    // a:[33,[4,5],22,1] 返回 4 
a.push(6);    // a:[33,[4,5],22,1,6] 返回 5 
 
array.pop( ) --- 删除并返回数组的最后一个元素
参数:无
功能方法pop()将删除array的最后一个元素,把数组长度减1,如果数组已经为空,则pop()不改变数组。
返回值返回它删除的元素的值。数组已经为空的时候,pop()方法返回undefined。 
是否修改原数组:是!---直接修改array
扩展:方法push()和方法pop()用数组提供先进后出栈的功能。
 
示例
var stack = [];       // 栈:[]
stack.push(1, 2);     // 栈: [1,2]      返回 2
stack.pop();        // 栈: [1]        返回 2
stack.push([4,5]);    // 栈: [1,[4,5]]  返回 2
stack.pop()         // 栈: [1]        返回 [4,5]
stack.pop();        // 栈: []         返回 1 
 
array.shift( ) --- 将元素移出数组
参数:无
功能方法shift()array的第—个元素移出数组,返回那个元素的值,并且将余下的所有元素前移一位,以填补数组头部的空缺。如果数组是空的,shift()将不进行任何操作,返回undefined。
返回值:返回数组原来的第一个元素,也就是删除的元素的值。数组已经为空的时候,shift()方法返回undefined。 
是否修改原数组:是!---直接修改array
扩展:该方法常常和unshift()一起使用。
 
示例:
var a = [1, [2,3], 4];
a.shift(  );  // 返回 1; a = [[2,3], 4]
a.shift(  );  // 返回 [2,3]; a = [4]
 
 
重排序方法
array.reverse()                               
array.sort()                                 
//重排序方法修改原数组,并不创建新数组,
//删除的都返回删除项的值
 
array.reverse() --- 颠倒数组中元素的顺序
功能:将颠倒数组元素顺序
返回值:原数组(已经颠倒元素顺序了)
是否修改原数组:是!---直接修改array,而不是创建一个新的数组。
 
array.sort( fn ) ---对数组元素进行排序
参数可选参数-fn,用来指定按什么顺序进行排序的函数
功能:将在原数组上对数组元素进行排序
参数描述:如果没有参数,将按字母顺序(字符编码顺序)对数组中的元素进行排序,实现排序的时候,首先会把数组的元素都转换成字符串,再进行排序。 如果想按照别的顺序进行排序,必须提供比较函数(传参)ex:参数---function fn (a,b){ return a-b; }    //a,b是数组中相邻的2项数组项,当a>b的时候,返回>0的数,那么交换a,b的位置,如果a<0的数,不交换位置,如果a=b,返回0,也不交换位置。
返回值:对原数组的引用,注意:数组在原数组上进行排序,不制作副本。
是否修改原数组:是!---直接修改array
 
数组的固定位置的增删改方法
 
array.splice(start,deleteCount,value,…) --- 插入、删除或替换数组的元素
参数start:开始插入或删除的数组元素的下标deleteCount:可选参数,从start位置开始,包括start在内,要删除的元素个数,如果没有指定它,将从start开始删除到原数组的结尾的所有元素,value要插入数组的零个或者多个,从start所指的下标处开始插入
功能:方法splice()将删除从start开始(包括start所指的元素在内)的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。位于插入或删除的元素之后的数组元素都会被移动,以保持它们与数组其他元素的连续性。
返回值:如果从array中删除了元素,返回的是含有被删除元素的数组。如果没有删除元素,返回空数组。
是否修改原数组:是!---直接修改array,而不是创建一个新的数组。
Bug:在JavaScript 1.2解释器中,如果删除的是单个元素,那么返回的是元素,而不是包含那个元素的数组。
 
--------------------以上7个方法,都直接对原数组进行操作,原数组会被修改------------------
 
可以复制数组方法
array.slice()                               
array.concat()                                 
//都先复制原数组,再对复制数组进行操作,返回操作后的新数组
 
array.slice(start,end) --- 返回数组的一部分
参数start:始处的数组元素的下标end:可选参数,数组片段结束处的后一个元素的下标,如果没有指定这个参数,包含从start到数组结束的所有元素,如果是负数,从数组尾部开始算起的元素。
功能:slice方法将返回数组的一部分,或者是一个子数组。返回的数组包含从start到end之间的所有元素,但不包含end所指的元素。如果没有指定end,返回从start到原数组结尾的所有元素。
返回值:一个新数组,包含从start到end(不包括该元素)指定的array元素。
是否修改原数组:否!
 
array.concat(value,…) --- 连接数组
参数要增加到array中的值,可以是任意多个。
功能:将创建并返回一个新数组,这个数组是将所有参数都添加到array中生成的。如果要进行conca()操作的参数是一个数组,那么添加的是数组中的元素,而不是数组。
返回值:一个新数组,包含array中的所有数组项和concat的参数数组项
是否修改原数组:否!
示例:
var a = [1,2,3];
a.concat(4, 5)          //返回 [1,2,3,4,5]
a.concat([4,5]);        //返回 [1,2,3,4,5]
a.concat([4,5],[6,7])   //返回 [1,2,3,4,5,6,7]
a.concat(4, [5,[6,7]])  //返回 [1,2,3,4,5,[6,7]]
 
将数组转化为字符串的方法
array.join()                               
array.toString()                        
array.toLocaleString()                                 
//有些情况会隐式调用toString()方法
 
array.join(separator) ---将数组元素连接起来以构建一个字符串
参数:在返回的字符串中用于分隔数组元素的字符或字符串,它是可选的。如果省略了这个参数,用逗号作为分隔符
功能:将每个数组元素转换成一个字符串,然后把这些字符串连接起来,在两个元素之间插入指定的separator字符串。
返回值一个字符串,通过把array的每个元素转换成字符串,然后把这些字符串连接起来,在两个元素之间插入连接符而生成。
是否修改原数组:否!
扩展:可以用String对象的split()方法执行相反的操作,即把一个字符串分割成数组元素。
 
array.toString() ---将数组转换成一个字符串
参数:无
功能:将把数组转换成一个字符串,并且返回这个字符串。当数组用于字符串环境中时,JavaScript会调用这一方法将数组自动转换成一个字符串。但某些情况下,需要明确的调用这个方法。
toString()在把数组转换成字符串时,首先要将数组的每个元素都转换成字符串(通过调用这些元素的toString()方法)。当每个元素都被转换成字符串时,它就以列表的形式输出这些字符串,字符串之间用逗号分隔。返回值与没有参数的join()方法返回的字符串相同。
返回值:用逗号连接一个字符串
是否修改原数组:否!
扩展:JavaScript1.2版本中,toString()将会返回用逗号和空格分隔的数组元素列表,这个列表采用数组直接量表示法,用方括号括起元素。
 
array.toLocaleString() ---把数组转换成局部字符串
参数:无
功能:将返回数组的局部字符串表示。它首先调用每个数组元素的toLocaleString()方法,然后用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。
返回值:array的局部字符串表示。
是否修改原数组:否!
 
 
数组的属性:length
 
array.length:可读写属性,可以通过修改array.length的值修改数组的长度
 
 
--------------------以上全部方法,都是JavaScript数组的常用的、基础的方法------------------
 
ECMAScript 5 添加的数组方法
 
位置方法
//详情请参考《JavaScript高级程序设计第三版》95页
array.indexOf()                  
array.lastIndexOf()
 
array.indexOf(target,start) ---正向查找数组项
参数:target:要查找的项,start:可选参数,查找起点位置的索引
功能:查找target在数组中的位置,在比较相等的时候会使用权等操作符(===)。
返回值:返回要查找的项在数组中的位置,没找到的情况下返回-1。
是否修改原数组:否!
浏览器支持:IE9+,Firefox2+,Safari3+,opera9.5+,chrome
 
array.lastIndexOf(target,start) ---与indexOf()方法相同,不同之处在于从数组的末尾往前查找
 
迭代方法  ---  不修改原数组
//详情请参考《JavaScript高级程序设计第三版》96页
array.every() : 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。
array.filter() : 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。
array.forEach() : 对数组中的每一项运行给定函数,这个方法没有返回值。
array.map(): 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
array.some(): 对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
 
浏览器支持:IE9+,Firefox2+,Safari3+,opera9.5+,chrome
 
归并方法  ---  迭代数组所有项,然后构建一个最终返回的值
//详情请参考《JavaScript高级程序设计第三版》97页
array.reduce() :
array.reduceRight() : 
浏览器支持:IE9+,Firefox3+,Safari4+,opera10.5+,chrome
分享到:
评论

相关推荐

    WebGL着色器——数组

    WebGL着色器和javascript语言、C语言一样 可以声明数组类型变量,不过WebGL着色器的数据仅仅支持一维数组,不支持多维数组。 声明语法结构 数组元素的数据类型 数组变量名[数组元素个数] // 声明一个数组变量fArr,...

    javascript从入门到跑路—–小文的js学习笔记(10)——数组(一维数组、二维数组以及三维数组)和冒泡排序

    javascript从入门到跑路—–小文的js学习笔记(1)———script、alert、document。write() 和 console.log 标签 … … javascript从入门到跑路—–小文的js学习笔记目录 ** 含义: 使用单独的变量名来存储一系列的...

    JavaScript基础教程——入门必看篇

    JavaScript他是一种描述性语言,其实他并不难学,只要用心学,一定会学好,我相信大家在看这篇文章的时候,一定也学过HTML吧,使用JavaScript就是为了能和网页有更好的交互,下面切入主题。  一. JavaScript 1.什么...

    前端开发经典项目:《基于JavaScript的JSON数组的购物车项目》

    《基于JavaScript的JSON数组的购物车项目》——虽然只是一个简单的购物车项目,但它综合运用了HTML、CSS、Json.JavaScript等相关的知识,特别适合刚刚入门前端的小伙伴进行学习和借鉴,可以帮助小伙伴们将前端开发的...

    21天学通javascript——PDF完整版下载.zip

    第一篇完整地讲解了Javascript的基础知识,主要内容包括Javascript概述、数据类型、常量与变量、表达式与运算符、程序语句、函数和数组等。第二篇专门介绍Javascript中内置对象的应用,内容包括Javascript对象基础、...

    【Qt】【C++】JSON 使用

    通过Qt操作JSON 数据,实现对JSON数据的解析 修改 添加。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。键值对的无序集合——对象。值的有序列表——数组。

    JavaScript入门经典(第3版) 附书源代码.rar

    判断、循环和函数3.1 选择语句——if语句和switch语句3.2 循环语句——for语句和while语句3.3 函数3.4 创建一个“在线小测试”程序7中的基本函数3.5 小结3.6 习题第4章 JavaScript——基于对象的语言第5章 浏览器...

    JavaScript中数组slice和splice的对比小结

    今天重温了一下Javascript,看到了数组的方法,其中有两个比较相似的方法——splice和splice,看着很像,就是多了一个p,但是用法却相当不一样。 在使用中,可以通过选择一个具有强语义表达性的 API 来减少混淆的...

    JavaScript入门经典(第1版)书源代码

    3.5 小结 3.6 习题第4章 JavaScript——基于对象的语言第5章 浏览器程序设计第6章 HTML表单——与用户进行交互第7章 窗体和框架第8章 字符串操作第9章 日期、时间和计时器第10章 常见错误、调试和错误处理第11章 ...

    javascript学习笔记.docx

    6) typeof函数的返回值:数字——number,字符串——string,布尔值——Boolean,对象、数组、null——object,函数名——function或undefined(未定义时)。主要用来区别区别对象和原始类型。要区分对象的具体类型...

    JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)

    说到深浅拷贝,必须先提到的是JavaScript的数据类型,之前的一篇文章JavaScript基础心法——数据类型说的很清楚了,这里就不多说了。 需要知道的就是一点:JavaScript的数据类型分为基本数据类型和引用数据类型。 ...

    js数组函数拓展

    一个javascript数组的拓展脚本——包含了随机排序与按需求排列大小功能。

    JavaScript中的数组操作介绍

    JavaScript中的数组对象自带了一些方法,可以通过使用这些方法来对数组进行操作。   join()   可以使用join()方法将数组中的成员合并到一个字符串中: 代码如下: var o = [1,2,3]; console.log(o.join());//1,2,...

    JavaScript数组的栈方法与队列方法详解

    数组(Array)和对象(Object)应该是JavaScript中使用最多也是最频繁的两种类型了,Array提供了很多常用的方法:栈方法、队列方法、重排序方法、操作方法、位置方法、迭代方法等等。 1、Array的栈方法 栈是一种LIFO...

    数组的操作

    数组的操作——用JavaScript进行Web开发

    JavaScript基础语法之js表达式

    一般,关于javascript基础语法,人们听得比较多的术语是操作符和语句。但,其实还有一个术语经常使用,却很少被提到,这就是javascript表达式(expression)。 原始表达式(primary exression)  原始表达式是表达式的...

    JavaScript模式中文[pdf] 百度云

     数组字面量  JSON  正则表达式字面量  基本值类型包装器  错误对象  小结  第4章 函数  背景  回调模式  返回函数  自定义函数  即时函数  即时对象初始化  初始化时分支  函数属性——备忘模式  ...

    jquery进行数组遍历如何跳出当前的each循环

    我是使用 $.each() 进行数组循环遍历,但是当进入判断时,不清楚该如何跳出当前循环,于是我就用 javascript 的方法——continue 发现并不正确。API 上的说明只有跳出整个循环(如果需要退出 each 循环可使回调函数...

    JavaScript——DOM操作——Window.document对象详解

    一、找到元素:  docunment.getElementById(“id”);根据id找,最多找一个;  var a =docunment.getElementById(... docunment.getElementsByClassName(“name”) 根据classname找,找出来的是数组; 二、操作内

Global site tag (gtag.js) - Google Analytics