首页 > 代码库 > js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组

数组栈方法

数组可以像栈一样。栈是一种先进后出的数据结构,最先添加的数据最后一个出来。栈方法添加数据也称为 推入  移除数据称为 弹出。


js为数值栈方法提供了 push()   和  pop() ;  两个方法。


push()

push() 方法接受参数就是你要添加进入到数组的值。push()  方法会将他们逐一添加到数组的末尾  数组的length属性会跟着更新数据。


*push(多个数组元素值) 返回的修改后的数组长度 

var array = [
‘kin‘,
‘cheong‘,
‘change‘,
‘hello‘,
‘haha‘,
‘hi‘
]; 
var arr_L = array.push(‘myNama‘,‘Age‘);//向数组推入两项值。返回的是推入数组项值后 数组的长度
alert(arr_L);//8


使用push方法等价于

array[array.length] = ‘NewValue‘;//等于是array[8] = ‘NewValue‘
//alert(array[array.length-1]);//NewValue


pop()

*pop() 在数组末尾移除一项,返回移除的值

 alert(array.pop());//NewValue
 alert(array.length + "   " + array[array.length-1]);// 8  Age length 跟着减少。


使用pop方法等价于 

array.length = array.length-1;
//减小数组长度。删除了最后一个数组



队列数据结构

* 数组列队方法。先进先出

* 队列数据结构的访问是先进先出(FIFO--First-In-First-Out)。队列在列表的末端添加项,从列表的前段移除项。

* shift() 移除数组中的第一项

* unshift() 在数组最前面添加一项

alert(array.shift());//kin 已经将第一项删除  删除的值为kin 返回的正式删除的值
alert(array.unshift(‘kin‘));//8在数组最前端添加了一项,返回数值当前长度


重排序方法

*reverse():纯粹的倒序 将数组内的所有值倒序处理。

*

*sort():按升序排序——它会调用每一项的String()方法,然后进行比较。因为它是 基于字符的比较.

*

alert(array[array.length-1]);//Age
array.reverse();
alert(array[0]);//Age
alert(array[array.length-1]);//kin
*/
array.sort();
var value = ‘‘;
for(var V in array){
value += array[V] +"    ";
}
document.write(value);//Age change cheong haha hello hi kin myNama按照字母顺序排序


对于比较数值的数组来说 如

var Num_Arr = [
13,1,5,7,9,3,11,15
];
/*
Num_Arr.sort();
var N = ‘‘;
for(var v in Num_Arr){
document.write(Num_Arr[v]+"  ");//1 11 13 15 3 5 7 9 
}


大多数时候你不会想要这样的结果,因此 你可以在sort中添加一个比较运算的函数。

Num_Arr.sort(function(v1,v2){
if(v1>v2){
return 1;
}else if(v1<v2){
return -1;
}else{
return 0;
}
});
var N = ‘‘;
for(var v in Num_Arr){
document.write(Num_Arr[v]+"  ");//1 3 5 7 9 11 13 15
}


有了比较函数。就可以随心所欲的对数组进行升降序排序了 想要进行降序?如下:将比较结果调过来即可。

Num_Arr.sort(function(v1,v2){
if(v1>v2){
return -1;
}else if(v1<v2){
return 1;
}else{
return 0;
}
});
var N = ‘‘;
for(var v in Num_Arr){
document.write(Num_Arr[v]+"  ");//15 13 11 9 7 5 3 1
}


在比较函数中,返回1,-1,0 让sort方法对数值值进行比较。

Num_Arr.sort(function(v1,v2){
return v1-v2;
//换成v2 - v1 则得到相反的结果。
});
for(var v in Num_Arr){
document.write(Num_Arr[v]+"  ");//1 3 5 7 9 11 13 15
}


对于纯数值类型的。这样更简单

当数组中包含有字符串和数值两个类型值时 。下面的函数方法却无效。

var Str_Arr = [
3,‘a‘,‘c‘,11,15,‘b‘
];
Str_Arr.sort(function(v1,v2){
return v1-v2;
});
for(var v in Str_Arr){
document.write(Str_Arr[v]+"  ");// 3 a c 11 15 b
}
var array = Array(‘kin‘);
alert(array);
alert(array.length);

数组的操作方法

concat()

concat() 方法用于连接两个或多个数组。

该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

该方法也用于复制数组。concat() 在当前数组中创建一个副本。其它操作都在创建的副本中执行。所以,不会对原来的数组产生影响。使用这个方法,可以给它传递参数,参数可以是数值,数组。数量不限。如果是值。则被添加到数组末尾。如果是数组,也将两个数组进行连接。

如:

var  arr1 = [
‘a‘,
‘b‘,
‘c‘
];
var arr2 = [
‘d‘,
‘e‘,
‘f‘
];
var arr3 = arr1.concat(arr2);//返回一个新的数组。这个数组包含了arr1  和 arr2 中的所有项值。
document.write(arr3);//a,b,c,d,e,f

关于concat()  这个方法还可以拼接值如;


var arr3 = arr1.concat(‘数组一‘,arr2,‘数组二‘);
document.write(arr3);//a,b,c,数组一,d,e,f,数组二


slice()

slice() 方法可从已有的数组中返回选定的元素。


Array.slice(数组的开始,数组的结束)

slice() 方法是针对一个数组中的一个或多个数组项值复制到一个新的数组中去,slice() 方法不会对原数组产生影响。slice() 可包含两个参数,第一个是数组值截取开始位置,这是必要参数,第二个是数组的结果位置,这是选要参数。如果只传递了一个值,则从该值到数组的最后一个项值。返回的是一个新的数组。

如:

var array = [‘kin‘,‘cheong‘,‘hello‘,‘haha‘,‘hi‘];
var arr = array.slice(1,4);//截取数组中1到4的值。返回的新数组给变量arr引用
document.write(arr);//cheong,hello,haha


当只有一个参数的时候。

var arr = array.slice(2);//从数组中第三个值到数组的最后一个。
document.write(arr);//‘hello‘,‘haha‘,‘hi‘


当参数为负数时。


var arr = array.slice(-2);//从后面算起  倒数第二个值到最后一个值。总共就两个数组项值
document.write(arr);//haha,hi
var arr1 = array.slice(-4,-1);//从后面算起  倒数第四个值到倒数第一个值。 总共三个数组项值。
document.write(arr1);//cheong,hello,haha



注意:

如果slice() 方法中有负数。可以用数组的总长度加上负值参数,例如  在一个拥有7个项值的数组。使用 slice(-5,-2);  相当于 7+-5 = 2; 7+-2 = 5;   也就是 slice(2,5);  另外,slice() 中参数2 不能大于 参数1  如: slice(5,2); 这样返回的数组是一个空数组。



splice()

splice() 方法主要用途是向数组中插入项,使用有3种方法。

定义一个数组:

var array = [‘kin‘,‘cheong‘,‘hello‘,‘haha‘,‘hi‘];

删除: 可以删除多个项,需要传递两个参数,一个是删除的开始位置。一个是结束位置。

如:

array.splice(1,3);//删除数组项1到3的值
alert(array);//kin,hi



插入: 可以向指定的位置插入任意数量的数组项值,需要提供3个参数。一个是插入的起始位置,要删除的项数(0 表示不需要删除直接添加),要插入的值。任意多项。可以是任何数据类型

如:

array.splice(1,0,‘new‘,‘value‘,[‘array1‘,‘array2‘]);
//在数组中项值1后面不删除任何值,插入值‘new‘ ‘value‘ 和数组[‘array1‘,‘array2‘]
document.write(array);//kin,new,value,array1,array2,cheong,hello,haha,hi


替换:向指定位置删除任意多的项,然后插入任意多的项值,来实现替换。需要提供3个参数。一个是插入的起始位置,要删除的项数,要插入的值。任意多项。可以是任何数据类型。

如:

array.splice(1,3,‘new‘,‘value‘,[‘array1‘,‘array2‘]);
//在数组中项值1后面删除3个值,替换成值‘new‘ ‘value‘ 和数组[‘array1‘,‘array2‘]  相当于cheong,hello,haha, 三个值替换成new,value,array1,array2,
document.write(array);//kin,new,value,array1,array2,hi