数组

一、创建一个数组

1)创建数组字面量,数组中可以存放任意类型的数据;

var emp=['tom','jeck',10,true,'lili','kk'];
console.log(emp);

2)使用内置构造函数创建数组

方法1:

var car=new Array('大众','大众1','大众2');
console.log(car);

方法2:

var car=new Array(3);
// 往数组中添加元素——使用下标
car[0]='大众';
car[1]='大众1';
car[2]='大众2';
console.log(car);

3)访问数组中的元素(数组名称下标,下标是从0开始)

例1:

// 创建数组,初始化长度为5,添加5个课程
var classes=new Array(5);
classes[0]='语文';
classes[1]='英语';
classes[2]='数学';
classes[3]='美术';
classes[4]='历史';
console.log(classes);
// 查看数组中元素个数
console.log(classes.length);

例2:

// 创建数组,直接添加5个员工姓名
var emp=new Array('tom','jeck','lili','scoc','jones')
console.log(emp);

例3:自动加元素

// 创建数组,初始化长度为5,添加5个课程
var classes=[];
classes[classes.length]='语文';
classes[classes.length]='英语';
classes[classes.length]='数学';
classes[classes.length]='美术';
classes[classes.length]='历史';
console.log(classes);
console.log(classes[3]);
 

4) 数组的分类和遍历

数组的分类分为两组:索引数组和关联数组

索引数组:以整数作为下标

关联数组:以字符串作为下标

例1:

// 创建关联数组
var arr=[];
// 添加元素
arr['eid']=1;
arr['ename']='tom';
arr[0]=20; console.log(arr);

结果:[eid:1,ename:'tom',20]

遍历数组中的元素:for 循环只能遍历下标是数字的

方法1:使用for循环遍历数组元素的下标,只能遍历索引数组

 

var score=[89,87,34,56,78,90,73];
// 遍历数组中每个元素的下标
for(var i=0;i<score.length;i++){
    console.log(i+'----'+score[i]);
}

 

例1:

// 创建数组,保存所有员工的工资,使用for循环遍历获取平均工资
var salary=[1000,2000,3000,4000,5000];
for(var i=0,sum=0;i<salary.length;i++){
    console.log(salary[i]);
    sum+=salary[i];

}
// 打印平均工资
console.log(sum/salary.length);

例2:

// 创建数组,这个数组中保存4个汽车的品牌名称,把品牌名称为宝马的改为BM
var brand=['奥迪','雷克撒斯','宝马','奔驰'];
// 使用循环遍历元素
for(var i=0;i<brand.length;i++){
    if(car[i]=='宝马'){
        console.log(i);
        // 修改元素值
        car[i]='BM';
    }

}
console.log(car);

方法2:for-in遍历,数组下标是字符串的类型,即可以遍历索引数组又可以遍历关联数组

例1:

var book=[];
// 添加元素
book['id']=113;
book['title']='水浒传';
book['price']=223;
book['pubTime']='2001-10-1';
console.log(book);
// 使用for-in来遍历
for(var key in book){
    console.log(key+'---'+book[key]);
}

例2:

// 创建数组,包含元素 推荐、热点、娱乐、财经,分别使用for循环和for-in遍历该数组中的元素
var blogs=['推荐','热点','娱乐','财经'];
// 使用for循环来遍历
for(var i=0,i<blogs.length,i++){
    console.log(i+'---'+blogs[i]);
}

// 使用for-in遍历
for(var key in blogs){
    console.log(key+'---'+blogs[key]);
}

例3:

/*练习:创建一个函数,在这个函数中传递2个参数(数组+字符串),
返回字符串的下标,如果找不到该字符串的下标,则返回-1
getIndex(['a','b','c','d'])*/

function getIndex(arr,str){
    for(var i=0;i<arr.length;i++){
        // 判断数组元素中是否含有str这个值
        if (arr[i]==str){
            return i;
        }
    }
    return -1;
} var res=getIndex(['推荐','热点','娱乐','财经'],'热点'); console.log(res);

例4:

// 创建函数getAvg,传递1个参数(数组表示所有的工资),返回平均工资
function getAvg(salary){
    // 获取平均值
    for(var i=0,sum=0;i<salary.length,i++){
        sum+=salary[i];
    }
    return sum/salary.length;

}
var res=getAvg([8000,2000,2000,5000]);
console.log(res);

例5:

// 创建函数getCount,传递2个参数(数组,字符串),返回字符串在数组元素中出现的次数
// getCount(['tom','jerry','tom','david'],'tom')
function getCount(arr,str){
    for(var i=0,j=0;i<arr.length,i++){
        if arr[i]==str:
            j++;
    }
    return j;
}
var res=getCount(['tom','jerry','tom','david'],'tom');
console.log(res);

例6:

// 创建函数getMax,传递1个参数(数组),返回数组中元素的最大值
// getMax([88,72,93,66]);  // 93
function getMax(){
    var max=arr[0]
    for(var i=0;i<getMax.length,i++){
        // 使用数组中的每一个元素和max比较
        // 如果max小于数组元素,则把元素放入max中
        if(max<arr[i]){
            max=arr[i];
        }
    }
    return max;
}
var res=getMax([88,72,93,66]);
console.log(res);

 5) 数组中的方法(API---应用程序接口,预先定义好的函数/方法)

 toString()       将数组中的元素按照,分割为字符串

var arr=['推荐','热点','娱乐','财经'];
// 将数组中的元素转为字符串,数组中元素使用逗号分隔
console.log(arr.toString());

 length()         将数组中的元素按照,分割为字符串

var arr=['推荐','热点','娱乐','财经'];
// 按照指定的字符分割数组中的元素
console.log(arr.join('|'));

concat()         拼接数组

var arr1=['推荐','热点','娱乐','财经'];
var arr2=['推荐1','热点2','娱乐3','财经4'];
console.log(arr1.concat(arr2));

列1:

// 练习:创建3个数组,分别存储不同的员工姓名,将3个数组拼接成一个新的数组
var arr1=['推荐','热点','娱乐','财经'];
var arr2=['推荐1','热点2','娱乐3','财经4'];
var arr3=['推荐a','热点b','娱乐c','财经d'];
console.log(arr1.concat(arr2,arr3));

slice()        截取数组中的元素

// 截取数组中的元素
var arr1=['推荐','热点','娱乐','财经'];
// 截取热点和娱乐两项
console.log(arr1.slice(1));          // 截取范围2~最后
console.log(arr1.slice(2,4));        // 截取范围2~4,截取到2和3两项,负数表示倒数

例1:

// 创建数组,保存a-h,每个元素存储1个字母,截取bc和ef,拼接成一个新的数组
var arr=['a','b','c','d','e','f','g','h'];
var arr1=arr.slice(1,3);
var arr2=arr.slice(4,6);
console.log(=arr2.concat(arr1));

 splice()      删除

 例1:

// 删除数组中的元素
var arr1=['推荐','热点','娱乐','财经'];
// 返回的是删除的元素,写一个参数就是从这个参数往后全部删掉
console.log(arr1.splice(1,2));
// 剩下的元素
console.log(arr1);

例2:删除2个添加2个

var arr1=['推荐','热点','娱乐','财经'];
arr1.splice(2,2,'新闻','旅游');
console.log(arr1);

例3:

// 创建数组,包含a-h,每个元素存储1个字母,删除d,e;替换f为m,在下标为1的位置插入字母z
var arr=['a','b','c','d','e','f','g','h'];
arr.splice(3,3,'m');       // ['a','b','c','m','g','h']
arr.splice(1,0,'z');       // ['a','z',b','c','m','g','h']
console.log(arr);

reverse()       反转数组中的元素

例1:

// 翻转数组中的元素
var arr=['a','b','c','d'];
console.log(arr.reverse());

sort()     按照unicode码排序

// 对数组元素进行排序
var arr=[70,65,102,90,82,231];
//console.log(arr.sort());      // 默认按照unicode码排序
console.log(arr.sort(function(a,b){
    return a-b;           // a-b从小到大排序     b-a从大到小排序
})); 

6) 冒泡排序

例1:

// 冒泡排序
var arr=[78,6,23,8,3]
// 从小到大排序
// 外层循环:比较4轮(循环4次)
for(var i=1;i<arr.length;i++){
    // 内层循环比较的次数,J代表元素的下标
    for(var j=0;j<arr.length-i;i++){
        // 交换两个元素的值
        // 如果当前元素大于下一个元素,则交换两个元素的值
        if(arr[j]>arr[j+1]){
            var tmp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=tmp;
        }
    }

}
console.log(arr);

push()       在数组后追加元素,返回的是数组的长度

例1:

// 数组的方法
var arr=['推荐','热点','娱乐'];
// 往数组的末尾添加元素
// 方法1
arr[arr.length]='新闻';
console.log(arr);
// 方法2
arr.push('汽车');
console.log(arr);

unshift()        往数组的开头添加元素,返回的是数组长度

例1:

var arr=['推荐','热点','娱乐'];
// 往数组开头添加元素,返回数组的长度
console.log(arr.unshift('体育'));
console.log(arr)

pop()        删除数组末尾的元素,返回删除的元素

例1:

// 数组的方法
var arr=['推荐','热点','娱乐'];
// 在数组结尾删除
console.log(arr.pop());

shift()      删除数组开头的元素 ,返回删除的元素

例1:

var arr=['推荐','热点','娱乐'];
console.log(arr.shift());
console.log(arr);

7)二维数组(数组中的每一个元素也是数组)、包装对象

 例1:

// 省市二级联动菜单
var arr=['北京','广东','江苏'];
var city=[
['海淀区','东城区'],
['广州','深圳'],
['南京','苏州']
];

// 访问二维数组中的元素,找到深圳
console.log(city[1][1]);

字符串操作——包装对象:目的是让原始类型的数据也可以像引用类型一样具有属性和方法。

JS提供了3中数据类型:String   Number   Boolean

例1:

// 将数据包装成字符串对象
var str1='hello';
console.log(typeof(str1));           // string
// 构造函数形式,将任意数据包装成字符串对象
var str2=new String('hello');
console.log(str2);
console.log(typeof(str2));           // object
// 强制转换为字符串,返回字符串
var str3=String('hello');
console.log(typeof(str3));           // string

 

 

 

 

 

      

posted @ 2019-10-28 17:52  Alieen617  阅读(257)  评论(0编辑  收藏  举报