javascript的数组和常用函数详解

作者:ca88

复制代码 代码如下:

1.认识数组

认清某些对象是还是不是是数组: instanceof、Array.isArray()

var a = [ "a" , "b" , "c" ],
b = [ "b" , "c" , "d" ],
c = [ "c" , "d" , "e" ],
_a = a.concat( b ).concat( c ),
_hash = {},
_new = [];
for( var i = _a.length; i--; ){
if( !_hash[ _a[ i ] ] ){
_hash[ _a[ i ] ] = 1;
_new.push( _a[ i ] );
};
};
return _new;

数组正是某类数据的聚众,数据类型能够是整型、字符串、以至是指标。
Javascript不帮忙多维数组,但是因为数组里面能够分包对象(数组也是叁个目的),所以数组能够通过相互嵌套达成类似多维数组的意义。

对此八个网页照旧三个大局功效域能够使用instanceof操作符。

思维:先用concat拼接数组 ,再利用二个对象、多少个新数组(用于寄放不另行的数组)。

1.1 定义数组

if(value instanceof Array){  //判定value是还是不是是数组
   
}
instanceof操作符它一旦唯有叁个大局推行碰到,要是网页包涵几个框架则动用ECMAScript5新扩张的Array.isArray()方法。

遍历旧数组,把值放到对象中,值不一样则停放新数组中,重复则不放。

评释有11个要素的数组:

if(Array.isArray(value)){//决断value是还是不是是数组

复制代码 代码如下:

}
Array.isArray()方法帮忙的浏览器有IE9 、Firefor 4 、Safari5 、Opera 10.5 、Chrome。

var a = new Array(10);

假诺要在未实现这几个法子中的浏览器中反省数组,则运用:

那时为a已经开垦了内部存款和储蓄器空间,包涵十个要素,用数组名称加 [下标] 来调用,例如 a[2] 但此时因素并未有早先化,调用将再次回到 undefined。
以下代码定义了个可变数组,并拓展赋值。

if(Object.prototype.toString.call(value)=="[object Array]"){
}

复制代码 代码如下:

将数组调换为字符串: toLocaleString()、toString()、valueOf()、join()

var a = new Array();
a[0] = 10;
a[1] = "aaa";
a[2] = 12.6;

复制代码 代码如下:

地方提过了,数组里面能够放对象,举例上面代码:

var test=['a','b','c'];
alert(test.toString());//a,b,c
alert(test.toLocaleString());//a,b,c
alert(test.valueOf());//a,b,c
alert(test);//a,b,c 暗中同意调用toString()方法
alert(test.join(','));//a,b,c
alert(test.join('|'));//a|b|c

复制代码 代码如下:

增多和移除数组成分方法:push()、pop()、unshift()、shift()

var a =    new Array();
a[0]    = true;
a[1]    = document.getElementById("text");
a[2]    = {x:11, y:22};
a[3]    = new Array();

push()方法能够承受任性数量的参数,把他们相继加到数组末尾,而且重返数组修改后的数首席营业官度。

数组还足以实例化的时候一贯赋值,举个例子:

pop()方法从数组末尾移除最终一项,然后回来移除的项。

复制代码 代码如下:

unshift()方法在数组前端增多大肆数量的参数并赶回新数老总度。

var a = new Array(1, 2, 3, 4, 5);
var b = [1, 2, 3, 4, 5];

shift()方法能够移除数组中率先个项并赶回移除的项。

a 和 b 都是数组,只不过b用了隐性表明,成立了另三个实例,此时一旦用alert(a==b)将弹出false

复制代码 代码如下:

1.2 多维数组

var test=[];
var count = test.push('a','b');//从数组末尾每个增进
count =test.push('c');
alert(count);//3
alert(test);//
var item = test.pop();
alert(item);//c
alert(test.length);//2

实则Javascript是不接济多维数组的,在asp里面能够用 dim a(10,3)来定义多维数组,在Javascript里面,假使用 var a = new Array(10,3) 将报错
可是在此以前说过,数组里面能够涵盖对象,所以能够把数组里面包车型客车某部成分再证明为数组,比如:

排序方法:reverse()和sort()

复制代码 代码如下:

reverse()方法会反转数组项顺,操作数组本人。

var a = new Array();
a[0] = new Array();
a[0][0] = 1;
alert(a[0][0]);  //弹出 1

sort()方法暗中认可按升序排列数组项,操作数组本人。

声称的时候赋值

复制代码 代码如下:

复制代码 代码如下:

var test=[1,2,3,4,5];
test.reverse();
alert(test);//5,4,3,2,1
var test2=[0,1,5,10,15];
test2.sort();
alert(test2);//0,1,10,15,5    sort()方法会调用每个数组项的toString()方法,相比较字符串,以显著排序。所以这里排序是字符串排序

var a = new Array([1,2,3], [4,5,6],[7,8,9]);
var b = [[1,2,3], [4,5,6], [7,8,9]];

sort()方法还足以流传三个相比函数。

功效一样,a采取常规实例化,b是隐性申明,结果都以生成八个多维数组。

正如函数在首先个参数应该投身第一个此前则赶回一个负数,要是五个参数相等则重返0,第二个参数应该投身第贰个之后则赶回二个正数。

1.3 Array literals

复制代码 代码如下:

其一还真不知中文怎么叫,文字数组?
聊起数组,不得不聊到Array  Literals,数组其实是独特的靶子,对象有特有质量和章程,通过 对象名.属性 、对象.方法() 来取值和调用,而数组是透过下标来取值,Array Literals跟数组有相当多一般,都以某数据类型的成团,可是Array Literals从根本来讲,是个对象,证明和调用,跟数组是有分别:

function compare(value1,value2){
    if(value1<value2){
        return -1;
    }else if(value1>value2){
        return 1;
    }else{
         return 0;
    }
}   
var test=[0,1,5,10,15];
test.sort(compare);
alert(test);//0,1,5,10,15  

复制代码 代码如下:

操作方法:concat()、slice()、splice()

var aa = new Object();
aa.x = "cat";
aa.y = "sunny";
alert(aa.x);    //弹出cat

concat()方法用于连接七个或五个数组。该措施不会转移现成的数组,而独有会再次回到被连接数组的多个别本。重返多少个新的数组。

开创一个轻易的目的,一般调用是通过aa.x,而只要真是Array  literals的话,用alert(aa[“x”])一样会弹出cat

复制代码 代码如下:

复制代码 代码如下:

var a = [1,2,3];
alert(a.concat(4,5));//1,2,3,4,5
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"
alert(arr.concat(arr2));
//George,John,Thomas,James,Adrew,Martin
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[ca88,2] = "Martin"
var arr3 = new Array(2)
arr3[0] = "William"
arr3[1] = "Franklin"
alert(arr.concat(arr2,arr3))
//George,John,Thomas,James,Adrew,Martin,William,Franklin

var a = {x:"cat",    y:"sunny"};
alert(a["y"]);  //弹出sunny

slice() 方法可从已有的数组中回到选定的因素。再次回到三个新的数组,包涵从 start 到 end (不包含该因素)的 arrayObject 中的成分。

那是另一种创立对象的不二秘技,结果是大同小异的

复制代码 代码如下:

2.数组成分的操作

var test =['a','b','c','d','e'];
var arr1=test.slice(1);
var arr2=test.slice(1,4);
alert(arr1);//b,c,d,e
alert(arr2);//b,c,d

地点已经说过,能够透过 数组[下标] 来读写元素
下标的限定是 0 – (23(上标2) -1),当下标是负数、浮点乃至布尔值的时候,数组会自动调换为指标类型,譬如:

splice() 方法向/从数组中丰盛/删除项目,然后回来被剔除的品类。操作数组本人。

复制代码 代码如下:

第一个参数:发轫地方、第贰个参数:截取的个数、第四个参数:追加的新因素。

var b    = new Array();
b[2.2]    = "XXXXX";
alert(b[2.2]);  //-> XXXXX

复制代码 代码如下:

那时也正是b[“2.2”]  = “XXXXX”。

//删除
var test=['a','b','c'];
var removed=test.splice(0,1)//删除第一项
alert(test);//b,c
alert(removed);//a 重返被剔除的项
//插入
var test2=['a','b','c'];
var removed2=test2.splice(1,0,'d','e')//从职分1初叶插入d,e
alert(test2);//a,d,e,b,c
alert(removed2)//空数组
//替换
var test3=['a','b','c'];
var removed3=test3.splice(1,1,'d','e')//从任务1开首插入d,e
alert(test3);//a,d,e,c
alert(removed3)//b

2.1数组的循环

职分方法:indexOf()、lastIndexOf()

复制代码 代码如下:

ECMAScript5提供格局支持浏览器:IE9 、Firefox 2 、Safari 3 、Opera 9.5 、Chrome

var a = [1,2,3,4,5,6];
for(var i =0; i<a.length; i ){
alert(a[i]);
}

indexOf() 方法可重返有个别钦点的字符串值在字符串中首次面世的地点。

那是最常用的,历遍数组,代码将逐条弹出1至6
还恐怕有一种常用的:

lastIndexOf() 方法可重返多个点名的字符串值最终出现的职责,在贰个字符串中的内定地方从后迈入寻找。

复制代码 代码如下:

 二个参数时:表示要物色的值,重返索引地方(从0开首)、多个参数时:第二个参数表示发轫地方,第三个参数表示要物色的值。

var a = [1,2,3,4,5,6];
for(var e in a){
alert(e);
}

复制代码 代码如下:

照旧各类弹出1至6,for…in是历遍对象(数组是分外的对象)对象,用在数组上,因为数组未有属性名,所以一直输出值,那结构语句用在目的上,举个例子上边:

var numbers=[1,2,3,4,5,4,3,2,1];
alert(numbers.indexOf(4));//3
alert(numbers.lastIndexOf(4));//5

复制代码 代码如下:

alert(numbers.IndexOf(4,4));//5
alert(numbers.lastIndexOf(4,4));//3

本文由ca88发布,转载请注明来源

关键词: ca88网址 ca88电脑网页版