jvaascript 数组

1、栈和队列(一维数组)

 1         var arr = [1,2,3,4,5,];
 2 
 3         console.log(arr[0]);
 4 
 5         //遍历数组(法一)
 6         for(var i = 0;i <arr.length;i++){
 7             console.log("arr[%d]=%d",i,arr[i]);
 8         }
 9 
10         //遍历数组(法二)
11         for(var i in arr){
12             console.log("arr[%s]=%s",i,arr[i]);
13         }

 

    //1.1使用构造函数创建一个空数组
    //new开辟空间并返回内存空间的引用
    var arr1 = new Array();
    console.log(arr1);

    //1.2使用构造函数创建一个容量为20的数组
    var arr2 = new Array(20);
    console.log(arr2);


    //使用构造函数创建一个包含三个元素额数组
    var arr3 = new Array("a","b",1);
    console.log(arr3);

 


栈:古代中的木盆。
结构:从一个口进,从同一个口出
特点:先进后出。
push
【格式】数组.push();
【功能】给数组末尾添加元素。
参数:我们要添加的元素,参数个数随意。
返回值:添加元素后,数组的长度。
pop()
【格式】数组.pop();
[功能]移除数组末尾的最后一个元素。
返回值:移除的元素。

例:
var arr = ["钢铁侠","蚁人","绿巨人"];
arr.push("蜘蛛侠","快跟")
alert(arr);//钢铁侠,蚁人,绿巨人,蜘蛛侠,快跟

var arr = ["钢铁侠","蚁人","绿巨人"];
var res=arr.pop();
alert(res);//绿巨人
alert(arr);//钢铁侠,蚁人


队列结构:从一头进,从另外特点先进先出。
特点:先进先出。

shift()
[格式]数组.shift()
功能:从数组的头部取下一个元素。
返回值:取下的元素

unshift()
【格式】数组.unshift(参数......)
功能:从数组的头部插入元素,参数的个数随意。
返回值:插入元素以后,数组的长度。

var arr = ["钢铁侠","蚁人","绿巨人"];
var res=arr.unshift("超人","绿箭侠");
alert(arr);//超人,绿箭侠,钢铁侠,蚁人,绿巨人
alert(res);//5

concat() 合并数组

【格式】数组1.concat(数组二);
功能:将两个数组合并成一个新数组。原数组并不会被改变。
返回值:我们合并好的新数组。
参数:我们要合并的数组。

var arr1 = ["钢铁侠","蚁人","绿巨人"];
var arr2 = ["超人","绿箭侠"];
var arr = arr1.concat(arr2);
alert(arr);
alert(arr1);
alert(arr2);

reverse()数组反转

 

indexof()查找数组对应的元素下标 

var arr = new Array(1,2,3,4,4,5);
var res = arr.lastIndexOf(4)
console.log(res);//4



slice()
【格式】数组.slice(start.end);
功能:基于当前数组获取指定区域元素,并创建一个新数组,源数组不变。
参数:start开始获取区域的下标,end结束获取区域的下标。
不包括end下标位置的元素。
返回值:指定区域元素生成的新数组。

var arr= ["钢铁侠","蚁人","绿巨人","超人","绿箭侠"];
var newarr = arr.slice(1,3);
alert(newarr);//蚁人,绿巨人
alert(arr);//钢铁侠,蚁人,绿巨人,超人,绿箭侠

splice 可以完成时删除、插入、替换操作。
【格式】数组.splice(star,length,元素......)
参数:
参数1:截取的开始下标。
参数2:截取的长度。
参数3:在截取开始下标位置,我们要插入的元素。插入的元素个数随意。
[注]会对源数组进行修改。
返回值:截取的元素,组成的数组

var arr= ["red","blue","green"];

//删除功能
var newarr = arr.splice(1,1);
alert(newarr);//blue
alert(arr);//red,green

//插入功能
var newarr = arr.splice(1,0,"yellow","xxx");
alert(arr);//red,yellow,green
alert(newarr); //null

//替换功能,先删除,后插入。
var newarr = arr.splice(1,1,"yellow");
alert(newarr);//blue
alert(arr);//red,yellow,green

join()

[格式]数组.join(拼接符)
功能:使用拼接符将数组中的元素拼接成字符串。
参数:拼接符。
返回值:拼接好的字符串。,

var arr = [10,20,30,40];
var str = arr.join("+ss");
alert(str); //10+ss20+ss30+ss40

 

2、二维数组

 

【格式】var arr = [[],[],[],[],[]];
【注】所谓二维数组,在数组中的元素还为数组。
例:
1, 2, 3, 4, 5
6, 7, 8, 9, 10,
11,12,13,14,15
16,17,18,19,20

var count = 0; //从1到25累加中间变重
var arr = [];
for(var i = 0; i < 5; i++){ //生成五个数组,存储在arr中
var newArr = [] ; //每个newArr都有五个数
for(var j=0; j< 5; j++){
newArr.push(++count);
}
arr.push(newArr);
}
alert(arr);//1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25

//打印左下角
for(var i= 0;i < arr.length;i++){//每一行中打印的元素和当前行数相等
for(var j= 0;j <= i;j++){
document.write(arr[i][j]+"&ensp;&ensp;");
}
document.write("<br />");
}

 

3、数组排序


系统提供排序方法:
reverse() 逆序排序    注:并非降序

【格式】数组.reverse()
var arr = [4,5,7,1,8];
arr.reverse();
alert(arr);//8,1,7,5,4

sort()将数组的元素升序排序
【格式】数组.sort()
【注】sort默认是按照字符串进行排序。AISSM码
【要求】一般情况下,我们要求自己去编写排序算法,系统提供的我们
排序函数,用的比较少。
var arr = [4,5,7,1,8];
arr.sort();
alert(arr);//1,4,5,7,8

var arr = [10,1,5,15];
arr.sort();
alert(arr);//1,10,15,5

4、冒泡排序算法


【原理】前后两个数两两进行比较,如果符合交换条件。
交换位置,直到所有数据排序完成,结束比较。

var arr = [4,5,7,1,8];
for(var i = 0;i <arr.length;i++ ){ //比较轮数
for(var j = 0;j< arr.length-i-1;j++){//每一轮比较次数
if(arr[j] > arr[j+1]){ //判断前后两个数是否符合交换条件
var tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
alert(arr);

 

5、选择排序


【原理】通过比较,首先先出最小的数放在第一位置上,然后在其余的数中选择
次小的数放在第二位置,以此类的数成为有序序列。
【注】打擂法

var arr = [4,5,7,1,8];
for(var i=0;i <arr.length - 1;i++ ){ //比较轮数
for(var j=i+1;j< arr.length;j++){
if(arr[i]>arr[j]){ //判断前后两个数是否符合交换条件
var tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
alert(arr);

 

6、数组引用


数组:复合数据类型/引用数据类型。
【注】所有复合数据类型都不直接存储在我们的函数中存,存储在堆段。
【注】函数运行的内存空间是预先分配好的,一旦分配上内存空间就不能进行改变了。
【注】在堆段,我们可以想要多少内存,就能随时分配多少内存。
【注】所有的复合数据类型,存储的都是门牌号,也就是地址。
所以这类数据类型我们叫做引用数据类型。
var a =10;
function sum(a){
var a=5;
alert(a);
}
alert(a);//10
sum(a); //5,访问后就释放了
alert(a);//10

var arr = [10,20];
function show(arr){
arr.push(30,40);
alert(arr);
}
alert(arr);//10,20
show(arr);//10,20,30,40
alert(arr);//10,20,30,40

例:
//封装冒泡排序
var arr = [20,30,70,80,90]
function bubble(arr){
for(var i = 0;i <arr.length;i++ ){ //比较轮数
for(var j = 0;j< arr.length-i-1;j++){//每一轮比较次数
if(arr[j] > arr[j+1]){ //判断前后两个数是否符合交换条件
var tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
bubble(arr);
alert(arr);

//封装选择排序
var arr = [20,30,70,80,90]
function choose(arr){
for(var i=0;i <arr.length - 1;i++ ){ //比较轮数
for(var j=i+1;j< arr.length;j++){
if(arr[i]>arr[j]){ //判断前后两个数是否符合交换条件
var tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
choose(arr);
alert(arr);

posted @ 2020-06-25 22:24  梦晶秋崖  阅读(104)  评论(0编辑  收藏  举报
返回顶端