zoukankan      html  css  js  c++  java
  • Javascript 基础--数组

    一、一维数组

    1.一维数组

    var weights = [3,5,1,3.4,2,50];
    var all_weight=0;
    var avg_weight=0;
    for(var i=0;i<weights.length;i++)
    {
        all_weight + =weights[i];
    }
    avg_weight=all_weight/weights.length;
    //var num = new Number(avg_weight);
    document.writeln("总体重是"+all_weight+"平均体重是:"+avg_weight.toFixed(2));

    如果你想知道,数据类型
    window.alert(avg_weight.constructor);
    js中的数组,可以存放各种数据类型(数值、字符串)

    数组的细节:
    基本用法:
    var 数组值 = [元素值1,元素值2...];
    1.1数组中的值可以是任意类型的。

    var num = ["helo",12,35.12];

    1.2数组在内存中存在的形式:
    js中的数组是引用传递

    递归示例:

    function abc(num1){
            if(num1>3){
               abc(--num1);
            }
            document.writeln(num1);
         }
           abc(5);

    1.3 值传递与引用传递的区别

       1.3.1 值传递

       

    var myval =900; //在内存中新开一块区域
    function abc(val){ //内存栈中新开一块区域,把myval的值复制一份副本传递给abc这个
    方法的形参val
    val = 90;
    }
    abc(myval);

       1.3.2 引用传递

       

    var myarr=[456,90,900];
    fuction abc2(arr){
      arr[0] = 35;
    }
    abc2(myarr);
    for(var i=0;i<myarr.length;i++)
    {
       document.writeln(myarr[i]);
    }

    数组的引用
    基本用法:
    数组的名称[下标];
    比如:
    var a = [23,"hello",4.5];
    我们访问 a[2] 则输出 4.5
    如果我们访问 a[3] 则输出 undefine
    结论:不能访问不存在的元素,数组下标是从0开始编号的。

    1.4 js的数据可以动态增长

    var a = [2,34];
    alert(a.length);
    a[2] = 56;
    alert(a.length);
    a[3] = "hell";
    alert(a.length);

    1.5 js数组的几个重要的应用

    数组名.length
    拆分字符串 字符串.split(拆分标准)

    对字符串分割,生成一个字符串数组:

    var str = "hello world abc 顺平";
    var arr = str.split(" ",3);
    for(var i=0;i<arr.length;i++)
    {
        document.writeln(arr[i]);
    }

    遍历数组还可以这样写:

    var arr =[45,90,0,"hello"];
    arr['gg'] = 900;  // arr[0]  arr[1]   arr[2]  arr[3]  arr['gg']
     for(var key in arr)
     {
           alert(key + "=" + arr[key]);
     }

    二、二维数组

    var arr=[["shunping",10.23,12],["a","b","c"]];
          for(var i=0;i<arr.length;i++)
          {
              for(var j=0;j<arr[i].length;j++)
              {
                  document.writeln(arr[i][j] +"&nbsp;");
              }
              document.writeln("<br/>");
          }

    三、排序查找

        3.1 冒泡排序

          var arr = [5,0,-56,900,12,35];
          //var arr = [ 1,2,3,34,44,94]
          var flag = false;
          for(var i=0;i<arr.length-1;i++)
          {
              document.writeln("大循环...<br/>");
              for(var j=0;j<arr.length-1-i;j++)
              {
                  if(arr[j]>arr[j+1])
                  {
                      var temp = arr[j];
                      arr[j] = arr[j+1];
                      arr[j+1] = temp;
                      flag = true;
                  }
              }
                
              if(flag){
                  flag = false;
              }else{
                  break;
              }
          }
    
        //输出排序后的数组:
        for(var i=0;i<arr.length;i++)
        {
             document.writeln(arr[i]);
        }

    3.2 二分查找:
    前台条件:该数组是有序的,不过不是有序的数组,不能使用二分查找。

    代码:

    var arr = [1,4,6,8,9,90,900];
    //思路:找到数组的中间数(midVal),和你要查找的数(findVal)进行比较,如
    果//midVal>findVal,则说明findVal在数组的左边,就把该数组二分(就在左边查找)

        var arr = [1,4,6,8,9,90,900];
          function binarySearch(arr,findVal,leftIndex,rightIndex){
               //防止无穷递归
    
               if(leftIndex>rightIndex)
              {
                  document.writeln("找不到");
                  return;
              }

    //找到中间值 var midIndex = Math.floor((leftIndex + rightIndex)/2); var midVal = arr[midIndex]; //比较 if(midVal>findVal){ //在左边找 binarySearch(arr,findVal,leftIndex,midIndex-1); }else if(midVal<findVal){ //在右边找 binarySearch(arr,findVal,midIndex+1,rightIndex); }else{ document.writeln("找到下标为" + midIndex); return; } } //测试 binarySearch(arr,2,0,arr.length-1);

    四、矩阵转置

    //矩阵转置:就是行列互换
         /* 2 4 6 8
            8 9 0 -1
            9 6 2 1  */
         
         var arr = [[2,4,6,8],[8,9,0,-1],[9,6,2,1]];
         var arr2 = [];
    
         //初始化,定下有多行
         for(var i=0;i<arr[0].length;i++){
            arr2[i] = [];
         }
    
         //动态添加数组中的数据
         for(var i=0;i<arr.length;i++)
         {
             for(var j=0;j<arr[i].length;j++)
             {
                  arr2[j][i] = arr[i][j];
             }
         }
    
         //遍历数组
         for(var i=0;i<arr2.length;i++)
         {
             for(var j=0;j<arr2[i].length;j++)
             {
                 document.writeln(arr2[i][j] + "&nbsp;");
             }
             document.writeln("<br/>");
         }
  • 相关阅读:
    Mac 虚拟环境搭建使用
    Django-rest-framework --- 分页,过滤,排序组件
    Celery 分布式任务队列 -- 基础入门
    Redis
    列表
    Git
    django 框架模型之models常用的Field,及常见错误原因及处理方案。
    Django-rest-framework --- 总结
    Django-rest-framework --- drf视图的详解
    Django之POST GET与前后端交互
  • 原文地址:https://www.cnblogs.com/luyuwei/p/3685890.html
Copyright © 2011-2022 走看看