javascript引用类型之数组Array

Array:数组中的每一项可以保存任何类型的数据,且数组的大小是动态调整的(最多可包含4294967295项,大约43亿项)

[1.1]数组创建:

[1.1.1]使用Array构造函数(在使用Array构造函数时,也可以省略New操作符)

e.g. var colors = new Array();

var colors = new Array(20);

var colors = new Array(‘red‘,‘blue‘,‘green‘);

var colors = Array(3);

[注意]若传递的是数值,则会按照该数值创建包含给定项数的数组;

如果传递的是其他类型的参数,则会创建包含那个值的只有一项的数组

e.g. var colors = new Array(3);//包含三项的数组

var colors = new Array(‘Greg‘);//包含一项,且该项为"Greg"的数组

[1.1.2]使用数组字面量表示法(用该方法不会调用Array构造函数)

e.g. var colors = [‘red‘,‘blue‘,‘green‘];

var colors = [];

[不可用] var colors = [1,2,];

//在IE8及以前中会包含一个三个项目,且每个项目为1、2和undefined的数组。在其他浏览器中为只包含1和2的数组

[不可用] var colors = [,,,];

//在IE8及以前会创建4项的数组,而在其他浏览器中会创建3项的数组

[1.2]数组读写

[1.2.1]在读取和设置数组的值时,要使用方括号并提供相应值的基于0的数字索引,数组的项数保存在其length属性中,这个属性始终会返回0或更大的值

[1.2.2]数组的length属性可读可写,通过设置数组的Length属性,可以从数组的末尾移除项或向数组中添加新项

e.g. var colors = [‘red‘,‘blue‘,‘green‘];

   colors.length = 2;

   alert(colors[2]);//undefined

   colors.length = 4;

   alert(colors[3]);//undefined

[1.2.3]利用length属性可以方便地在数组末尾添加新项

e.g. colors[colors.length] = ‘black‘;

[1.2.4]当把一个值放在超出数组大小的位置上时,数组就会重新计算其长度值,即长度值等于最后一项的索引加1

e.g. var colors = [‘red‘,‘blue‘,‘green‘];

colors[99] = ‘black‘;

alert(colors.length);//100

[1.3]数组检测

[1.3.1]if(value instanceof Array){}:问题在于它假定只有一个全局执行环境,如果网页中包含多个框架,那实际上就存在两个以上不同的全局环境,从而存在两个以上不同版本的Array构造函数。如果从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数。

[1.3.2]ECMAScript5新增了Array.isArray()方法:if(Array.isArray(value)){}。该方法的目的是最终确定某个值到底是不是数组,而不管它在哪个全局环境中创建的

[1.4]数组转换

[注意]如果数组中的某一项的值是null或者undefined,那么该值在join()、toLocaleString()、toString()和valueOf()方法返回的结果中以空字符串表示

[1.4.1]toString():返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串

[1.4.2]valueof():返回的还是数组

e.g. var colors = [‘red‘,‘blue‘,‘green‘];

console.log(colors.valueOf());//[‘red‘,‘blue‘,‘green‘]

alert(colors.valueOf());//‘red,blue,green‘

alert(colors.toString());//‘red,blue,green‘

alert(colors);//‘red,blue,green‘[注意]由于alert()要接收字符串参数,它会在后台调用toString()方法,会得到与toString()方法相同的结果

[1.4.3]toLocaleString():它会创建一个数组值以逗号分隔的字符串,而每一项的值调用的是toLocaleString()方法

[1.4.4]join:可以使用不同的分隔符来构建这个字符串,join只接收一个字符,用作分隔符的字符串,然后返回包含所有数组项的字符串

e.g. var colors = [‘red‘,‘green‘,‘blue‘];

alert(colors.join(‘,‘));//‘red,green,blue‘

alert(colors.join(‘||‘));//‘red||green||blue‘

alert(colors.join());//‘red,green,blue‘

alert(colors.join(undefined));//‘red,green,blue‘[注意]在IE7及以前会使用undefined作为分隔符

[1.5]数组方法

[1.5.1]栈方法:栈是一种LIFO(last-in-first-out)后进先出的数据结构,也就是最新添加的项最早被移除。栈中项的插入(叫做推入)和移除(叫做弹出)只发生在栈的顶部。

[1.5.1.1]push()方法:可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。

[1.5.1.2]pop()方法:从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

[1.5.2]队列方法:队列是一种FIFO(first-in-first-out)先进先出的数据结构,队列在列表的末端添加项,从列表的前端移除项。

[1.5.2.1]shift():移除数组中的第一个项并返回该项,同时数组的长度减1(结合使用shift()和push()可以模拟队列)

[1.5.2.2]unshift():在数组前端添加任意个项并返回新数组长度(结合使用unshift()和pop()从相反方向模拟队列)

[注意]IE7及以下unshift()方法返回的总是undefined

[1.5.3]排序方法:

[1.5.3.1]reverse():反转数组的顺序,返回经过排序之后的数组

[1.5.3.2]sort():按升序排列数组项,sort方法会调用每个数组项的toString()方法,然后比较得到的字符串排序,返回经过排序之后的数组

[注意]sort()方法可以接受一个比较函数作为参数,以便指定哪个值在哪个值的前面。比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个参数之后则返回一个正数

[比较函数] (使用:e.g. array1.sort(compare);)

对于数值类型或valueOf()方法会返回数值类型的对象类型,比较函数可以简化为:

function compare(value1,value2){

return value2 - value1;

}

[tips]:常用以下方法来创建一个随机数组

function compare(){

return Math.random() - 0.5;

}

[1.5.4]操作方法(切开、连接、插入、删除、替换):

[1.5.4.1]concat():基于当前数组中的所有项创建一个新数组,先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组(concat()不影响原数组)

[注意1]没有给concat()方法传递参数时,它只是复制当前的数组

[注意2]如果参数是一个或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中

[注意3]如果传递的值不是数组,这些值就会被简单地添加到结果数组的末尾

e.g. var numbers = [1,2];

console.log(numbers.concat());//[1,2]

console.log(numbers.concat([5,4,3],[3,4,5],1,2));//[1,2,5,4,3,3,4,5,1,2];

[1.5.4.2]slice():基于当前数组中的一个或多个项创建一个新数组,接受一个或两个参数,即要返回项的起始和结束位置 ,最后返回新数组(slice()不影响原数组)

[注意1]没有参数时,返回原数组

[注意2]只有一个参数时,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项

[注意3]两个参数时,该方法返回起始位置和结束位置之间的项,但不包括结束位置的项

[注意4]若参数为负数时,则用数组长度加负数作为参数

[注意5]若结束位置小于开始位置,则返回空数组

[1.5.4.3]splice():原数组变为修改后的数组,而splice()返回从原数组中删除的项组成的数组,若无删除项则返回空数组

[a]删除:两个参数为要删除的第一项的位置、要删除的项数

[b]插入:三个参数为起始位置、0(要删除的基数)、要插入的项

[c]替换:三个参数为起始位置、要删除的项数、要插入的项

[注意1]若第一个参数为负数时,则用数组长度加负数作为参数

[注意2]若第二个参数为负数时,则用0作为参数

[1.5.5]位置方法(ECMAScript5):两个参数:要查找的项、表示查找起点位置的索引(可选)。返回第一个满足条件的查找项在数组中的位置,如果没有找到则返回-1(位置方法不会影响原数组)

[注意]在比较时,使用全等操作符

[1.5.5.1]indexOf()

[1.5.5.2]lastIndexOf()

[tips]若返回满足条件的项的所有索引值

[1.5.6]迭代方法(ECMAScript5):两个参数:要在每一项上运行的函数、运行该函数作用域对象——影响this的值(可选)。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置、数组对象本身(迭代方法不会影响原数组)

[1.5.6.1]every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true

[1.5.6.2]filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组(常用于查询符合条件的所有数组项)

[1.5.6.3]forEach():对数组中的每一项运行给定函数,这个方法没有返回值(相当于for循环)

[1.5.6.4]map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组(常用于创建包含项与另一个数组一一对应的数组)

[1.5.6.5]some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true

[1.5.7]归并方法(ECMAScript5):迭代数组的所有项,构建一个最终返回的值。接收两个参数:一个在每一项上调用的函数、作为归并基础的初始值(可选)。传给reduce()和reduceRight()的函数接受4个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上。因此,第一个参数是数组第一项,第二个参数是数组第二项(归并方法不会影响原数组)

[1.5.7.1]reduce()

[1.5.7.2]reduceRight()

时间: 2024-07-30 16:29:22

javascript引用类型之数组Array的相关文章

JavaScript——引用类型之数组

前言 之前本菜打算在写完基本类型后写引用类型Object的,因为Object是引用类型的基础,其他的引用类型也是以Object为根本.只是关于对象的基本认识与简单操作确实可写的不多,打算之后与原型.原型链一起写.本博将介绍引用类型Array,即JavaScript中的数组. Array 首先数组到底是什么呢?数组是一段线性分配的内存,它能通过整数计算偏移并访问其中的元素.遗憾的是这个定义是指其他语言中的数组,JavaScript中并没有此类数据结构.作为替代,JavaScript中基于对象创建了

Javascript 学习之数组 Array

数组在Javascript中占有很重要的地位.任何控件开发离不开数组的使用. 构造函数 new Array( ) new Array(size) new Array(element0, element1, ..., elementn) 参数 size 期望的数组元素个数.返回的数组,1ength域将被设为size的值. element0, ... elementn 两个或多个值的参数列表.当使用这些参数来调用构造函数Array()时,新创建的数组的元素就会被初始化为这些值,它的length域也会

引用类型之数组array最全的详解

Array类型 今天总结一下array类型. js中的数组是有着非常强大的功能.具有很大的灵活性,有两个方面的特点 1.数组的每一项可以保存任何的数据类型:2.数组大小可以动态的调整:看下面的例子: var one=new Array(); //空数组 var two=new Array(5) //length为5的数组 var three=new Array("double",3) //包含double和3的数组 var four=[] //用[]表示 var five=[1,2,3

JavaScript中的数组Array

抄自:https://www.jianshu.com/p/7e160067a06c js中数组的方法种类众多,有ES5之前版本中存在的,ES5新增,ES6新增等:并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中原型上的方法. 一.创建数组的方式 1. 字面量方式 var arr1 = []; //创建一个空数组 var arr2 = [5]; //创建一个具有单个元素的数组 var arr3 = [5,6,7]; //创建一个具有多个元素的数组 2. 构造函数

JavaScript 引用类型数组!

在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只能存放同一类型或其子类型元素,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改. 创建数组 在JavaScript多种方式创建数组 构造函数 1.无参构造函数,创建一空数组 var a1 = new Array();

Javascript数组Array的forEach方法

Javascript数组Array的forEach扩展方法 forEach是最常用到的数组扩展方法之一,相当于参数化循环数组,它简单的在数组的每一个元素上应用传入的函数,这也意味着只有存在的元素会被访问和处理.  如果我们用console.log替换处理函数,将可以得到另外的有趣结果: [1,2,3,"csser"].forEach(console.log); 结果: 1, 0, Array[1, 2, 3, "csser"] 2, 1, Array[1, 2, 3

思维导图(自己整理,希望对大家有用):JavaScript函数+canvas绘图+Array数组

1.javascript函数: 2.Array数组: 3.canvas绘图:

Javascript基础系列之(四)数据类型 (数组 array)

字符串,数值,布尔值都属于离散值(scalar),如果某个变量是离散的,那么任何时候它只有一个值. 如果想使用变量存储一组值,就需要使用数组(array). 数组是由多个名称相同的树值构成的集合,集合中每个数组都是数组的元素(element),可以使用变量team存储团队里每个成员的名字. 在JavaScript中,数组使用关键字 Array声明创建,同事还可以声明变量的长度length.例如 var aTeam = new Array(12);//声明变量的长度 在无法预知数组的最终个数时,声

第一百零三节,JavaScript对象和数组

JavaScript对象和数组 学习要点: 1.Object类型 2.Array类型 3.对象中的方法 什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起.它也常被称做为类,但ECMAScript中却没有这种东西.虽然ECMAScript是一门面向对象的语言,却不具备传统面向对象语言所支持的类和接口等基本结构. 一.Object对象类型 Object类型对象, 到目前为止,我们使用的引用类型最多的可能