资讯专栏INFORMATION COLUMN

创建和访问数组及使用方法

LeoHsiun / 2951人阅读

数组

数组:一组变量的集合,起一个统一的名字。
如何使用数组:创建 取值 赋值
创建:共四种

创建空数组:var 数组名=[]; var 数组名=new Array();

  何时使用:暂时不知道数据内容,先创建空数组,再追加

创建同时初始化数组内容:var 数组名=[值1,值2,...]

      何时使用:创建时,就已经知道数组的内容  

创建指定元素个数的数组: var 数组名=new Array(n);创建一个新数组对象,同时初始化n个空元素

创建同时初始化数组内容:var 数组名=new Array(值1,值2,...)

var week=["日","一","二","三","四","五","六"];
            0   1    2   3    4    5    6
            console.log("今天星期"+week[5]);

数组中每个元素<==>一个变量: 用法和变量完全相同!

2. 取值:获取数组中指定位置的元素内容
   下标:数组中标识每个元素位置的序号
       默认,自动从0开始,每个+1,到元素个数-1结束
   如何取值:var 元素的值=数组名[下标];
3. 赋值:将新值放入指定位置的元素中保存
   如何赋值:数组名[下标]=新值;

数组是引用类型的对象:
    数组名作为变量赋值或参数传递时,都是将地址值复制给对方
    后果,对方修改数组的内容,访问原数字名也会受影响

null: 主动释放一个对象的引用。null本身是原始类型的值
垃圾回收器:伴随主程序,同时运行的后台程序
            记录每个对象当前被引用的次数
          被引用的次数==0,垃圾回收器自动释放对象内存空间
强烈建议:在使用完,较大对象后,主动赋值为null,总是好习惯

获取数组的元素个数:arr.length属性,不加圆括号
固定套路:
     获得数组最后一个元素:arr[arr.length-1];

  向数组末尾追加一个新元素:arr[arr.length]=新值
js中的数组 vs 其他语言中的数组:3个区别:
  1. 不限制元素的数据类型
  2. 不限制数组长度
  3. js的数组越界不会出错!
       赋值时:自动创建制定下标的元素,保存新值
               length属性,会随最大下标而变化
       取值时:视图从没有的下标位置取值,返回undefined

遍历数组:从第0个元素开始,依次获取每个元素,

         对每个元素执行相同的操作
   下标:遍历数组时,天生的循环变量!
        

            var emps=[];
            var input="";
            while((input=prompt("输入员工姓名"))!="exit"){
                emps[emps.length]=input;
            }
            console.log(emps);
            var arr=[2,5,4,6,7,9];
            function getMax(arr){
                var max=arr[0];
                for(var i=1;imax&&(max=arr[i]);
                }
                return max;
            }
            console.log(getMax(arr));//获取数组中最大值
//获取元素下标的位置
            function indexOf(arr,elem){
                for(var i=0;i

//冒泡排序

                function myArr(arr){
                for(var i=0;iarr[j+1]){
                            var temp=arr[j];
                            arr[j]=arr[j+1];
                            arr[j+1]=temp;
                        }
                    }
                }
            }
            var arr=[12,4,9,21,43,3];
            myArr(arr);
            console.log(arr);
关联数组

数组的API:
关联数组(hash数组):可自定义元素下标名称的数组(关联数组是字符串)
索引数组:自动从0开始分配连续不重复的序号下标
如何创建关联数组:2种方式:

  1. 先创建普通空数组,再追加自定义下标的元素
     var ym=[];
     ym["sname"]="MM";
     ym["A"]=81;
     ym["B"]=53; 
     ym["C"]=89;
*关联数组的length属性失效*
*关联数组中的key不能重复*
关联(hash)数组优势:查找极快!和元素个数无关!

  2. 创建数组同时,初始化元素内容:
     var mm={"sname":"MM","A":81,"B":53,"C":89};
               key    value
     关联数组中保存的是多个key/value对儿
                        键  值

//数组去重

           var arr=[2,2,4,5,3,6,5,3];
            function myArr(arr){
                var arr1=[];
                for(var i=0;i

如何遍历关联数组:

   for(var key in arr){
//依次取出arr中每个key,存在变量key中
arr[key]-->获得当前正在遍历的key中存储的值
   }

## 数组API ##

数组转换成字符串:有两种方法

var str=arr.toString(); 默认只能以逗号分隔每个元素。

var str=arr.join("连接符");自定义元素间的连接符
固定套路:

将字符数组,无缝拼接为单词:
比如: var chars=["H","e","l","l","o"];

将单词数组,拼接为句子:

将数组转化为页面上的列表/选择元素:

优化:频繁字符串拼接,推荐使用数组的join方法作为替代
步骤:

先将要拼接的子字符串,放入一个数组中,临时保存

遍历结束后,一次性join成一个完整字符串

var words=["we","two","who","and","who"];
    var str=words.join(" ");
    console.log(str);//we two who and who

连接数组和获取子数组:不修改原数组对象,返回新数组对象

   concat: var newArr=arr.concat(值1,值2,[值3,值4].....)
   slice: var subArr=arr.slice(starti[,endi+1]);
             starti: 开始的位置下标
             endi: 获取到的位置下标
             ***含头不含尾***
             slice支持倒数下标
             省略endi,从starti一直取到结尾
            var arr=[1,4,3];
            var arr1=[22,44];
            var newArr=arr.concat(13,134,arr1);
            console.log(arr);

splice:删除,插入,替换任意位置的任意个元素

    ***直接修改原数组 
删除:splice(starti,n);//starti
            var arr=[1,2,4,4,5];
            var id=arr.splice(2,2);
            console.log(arr);
            console.log(id);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/81604.html

相关文章

  • js常见对象方法

    摘要:构造函数是是引用类型的一个新实例一创建实例的方法第一种是使用操作符后跟构造函数使用对象字面量表示法与相同二访问对象属性从功能上看,这两种访问对象属性的方法没有任何区别。对数组中的每一项运行给定函数,如果该函数对任一项返回,则返回。 对象是某个特定引用类型的实例。新对象是使用new操作符后跟一个构造函数来创建的。 var person = new Object(); 构造函数是...

    dendoink 评论0 收藏0
  • JavaScript 工作原理之十五-类继承 Babel TypeScript 代码转换探秘

    摘要:使用新的易用的类定义,归根结底也是要创建构造函数和修改原型。首先,它把构造函数当成单独的函数且包含类属性集。该节点还储存了指向父类的指针引用,该父类也并储存了构造函数,属性集和及父类引用,依次类推。 原文请查阅这里,略有删减,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland。 本系列持续更新中,Github 地址请查阅这里。 这是 JavaScript 工作原理的第...

    GeekGhc 评论0 收藏0
  • JavaScript 工作原理之十五-类继承 Babel TypeScript 代码转换探秘

    摘要:使用新的易用的类定义,归根结底也是要创建构造函数和修改原型。首先,它把构造函数当成单独的函数且包含类属性集。该节点还储存了指向父类的指针引用,该父类也并储存了构造函数,属性集和及父类引用,依次类推。 原文请查阅这里,略有删减,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland。 本系列持续更新中,Github 地址请查阅这里。 这是 JavaScript 工作原理的第...

    BigNerdCoding 评论0 收藏0
  • JavaScript 工作原理之三-内存管理如何处理 4 类常见的内存泄漏问题(译)

    摘要:这是因为我们访问了数组中不存在的数组元素它超过了最后一个实际分配到内存的数组元素字节,并且有可能会读取或者覆写的位。包含个元素的新数组由和数组元素所组成中的内存使用中使用分配的内存主要指的是内存读写。 原文请查阅这里,本文有进行删减,文后增了些经验总结。 本系列持续更新中,Github 地址请查阅这里。 这是 JavaScript 工作原理的第三章。 我们将会讨论日常使用中另一个被开发...

    weknow619 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<