zoukankan      html  css  js  c++  java
  • 数组

    一、创建一个数组

    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

          

  • 相关阅读:
    算法训练(大富翁)
    算法训练题(奖励最小)
    算法训练题
    乔布斯
    算法题(符合题意的6位数)
    算法题(八皇后)
    算法题(分小组)
    汉诺塔
    递归算法题(兔子)
    字符串-mask-每个元音包含偶数次的最长子字符串
  • 原文地址:https://www.cnblogs.com/hd-test/p/11753969.html
Copyright © 2011-2022 走看看