数组是复合数据类型(对象类型)的数据,它的数据索引为数字,从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着色器允许声明数组类型变量,但与JavaScript或C不同的是,它们仅支持一维数组,不支持多维数组。数组的声明语法如下: ```glsl 数组元素的数据类型 数组变量名[数组元素个数]; ``` 例如,你可以声明一...
javascript从入门到跑路—–小文的js学习笔记(1)———script、alert、document。write() 和 console.log 标签 … … javascript从入门到跑路—–小文的js学习笔记目录 ** 含义: 使用单独的变量名来存储一系列的...
《JavaScript实战手册——第七版代码》是一本专为JavaScript开发者准备的实践指南,它涵盖了从基础到高级的各种JavaScript编程技术。这本书的代码示例旨在帮助读者深入理解语言机制,并提升在实际项目中的应用能力。...
在这份"JavaScript对象与数组参考大全"中,我们将深入探讨JavaScript的核心概念——对象和数组,它们是JavaScript编程的基础,也是理解和编写复杂应用的关键。 一、JavaScript对象 1. 对象定义:JavaScript对象是一...
在IT行业中,微信小程序是一种轻量级的应用开发平台,它允许开发者通过JavaScript、WXML...开发者需要具备扎实的JavaScript基础,了解微信小程序的开发框架,并且能够灵活运用这些知识来实现功能丰富的用户界面。
所有JavaScript对象都继承自一个基础对象——Object。 创建对象有两种常见方式: 1. 使用`new`运算符: ```javascript var obj = new Object(); ``` 这会创建一个新的对象实例,`new`关键字后面跟着构造函数`Object...
这篇“web学习笔记——javascript基础”将带你走进JavaScript的世界,理解其基本概念和常用语法。 JavaScript语法基础: 1. 变量:在JavaScript中,变量用于存储数据。声明变量使用`var`关键字,例如`var myVar = ...
总结一下,这个"JavaScript例子——计算"可能会涵盖基本的算术运算、运算符优先级、Math对象的使用、数组操作、类型转换以及可能的自定义函数设计。对于学习和提升JavaScript编程技能,这些都是非常重要的知识点。...
本文将深入探讨JavaScript的基础知识,帮助初学者快速入门。 首先,JavaScript是一种基于对象和事件驱动的描述性语言,这意味着它依赖于已有的对象来执行任务,并通过事件(如用户点击按钮)来触发代码执行。它也是...
5. **数据存储**:如果需要保存用户的标注,可以将标注信息(如位置、内容等)存储在数组、JSON对象或者数据库中。 6. **异步处理**:如果标注涉及从服务器获取额外信息(如根据坐标查询相关数据),则需要使用AJAX...
在JavaScript编程中,处理数组是常见的任务之一,其中包括去除数组中的重复元素。传统的做法是使用多层循环进行比较和删除,这种方法效率低下且代码冗余。然而,JavaScript对象的一个特性——键的唯一性,为解决这个...
ASP.NET中后台C#数组与前台JS数组交互 在ASP.NET中,后台C#数组与前台JS数组的交互是一个常见的问题。前台JS数组需要从后台C#数组中获取数据,而后台C#数组则需要从数据库中获取数据。下面我们将详细介绍如何实现这...
数组是Javascript中的基本数据结构之一,用于存储有序集合。数组的创建和使用非常简单,可以用new Array()构造函数来创建数组,并使用数组索引来访问元素,如示例中的vara=new Array(); a[0]="Acer"; a[1]="Dell";。...
最初的想法通常是从最直观的方式开始——使用双层循环来检查数组中的每一个元素是否已经存在于结果数组中。具体步骤如下: 1. **定义一个新数组** `res` 用于存储最终去重后的结果。 2. **外层循环** 遍历原数组 `...
JavaScript语法基于ECMAScript规范,它包括变量、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、运算符(算术、比较、逻辑等)、控制结构(条件语句如if...else、循环如for、while)以及函数...
《基于JavaScript的JSON数组的购物车项目》——虽然只是一个简单的购物车项目,但它综合运用了HTML、CSS、Json.JavaScript等相关的知识,特别适合刚刚入门前端的小伙伴进行学习和借鉴,可以帮助小伙伴们将前端开发的...
第一篇完整地讲解了Javascript的基础知识,主要内容包括Javascript概述、数据类型、常量与变量、表达式与运算符、程序语句、函数和数组等。第二篇专门介绍Javascript中内置对象的应用,内容包括Javascript对象基础、...