博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript核心语法学习部分(五)
阅读量:6915 次
发布时间:2019-06-27

本文共 3352 字,大约阅读时间需要 11 分钟。

程序=数据+算法;

前面学的if/if-else/switch/循环解决的都是流程问题,即是算法问题。

所谓的数据结构,就是把数据与数据间的关系按照特定的结构来保存。设计合理的数据结构是解决问题的前提。

数组:

①存储:连续存储多个数据的存储空间。

②使用:相当于多个变量的集合。

为什么使用数组?现实中数据都是批量分类 管理的。

何时使用:只要批量管理多个数据,就要用数组保存。

如何使用:数据都是用[]创建出来的。

var arr=[];  创建了一个数组对象,数组中包含了0个元素。

var arr=[95,61,95];创建了一个数组对象,数组中联系存储了3个元素,分别是95,61,95。

2个不限制:①不限制元素个数!②不限制元素数据类型!

数组是引用类型的对象。

原始类型:数据保存在变量本地

引用类型:数据不保存在变量本地,保存在“堆”中;由地址指向实际数据。

引用类型特点:可以保存多个数据,而且数据个数随时可变。

为什么要用引用类型?

原始类型中只能保存1个值,1个值无法精确描述一个东西,现实中,都是用多个属性共同描述一样东西。

 

对象:凡是存储在堆中,都是对象!

使用引用类型的对象:使用变量,等效于使用对象的地址。使用对象地址,等效于使用对象本身。

数组对象支持直接输出数组内容。

其他数组创建语法:var arr=new Array(num);

new:要在堆中开辟空间!

Array:ECMAScript标准中的内置类型。new Array:在堆中创建一个数组 类型的存储区域。(num)代表初始创建num个元素。

null:一个变量没有指向任何对象

何时使用null:主动释放对象!

垃圾回收:js引擎自动销毁不再被引用的对象!垃圾回收程序:随js程序运行而后台同时运行。

只要对象还有变量引用,就不回收。

访问数组:数组一组变量的集合。

如何获得其中一个变量/数据:下标,数组中唯一标识一个元素的序号。从0开始,最后一个元素的下标是“元素个数-1”;

js内置对象不但封装存储,而且封装常用API

API:已经实现的方法,可以直接调用。

Array  API:

①arr.length属性:数组中元素的个数。

访问任意数组的最后一个元素 :var last=arr[arr.length-1]

length属性值,随数组长度变化而自动变化!

js中数组可以根据程序的需要,自动扩容,保证程序的正常执行。

数组扩容和缩容:都是length属性的值。如果length属性>旧值,会扩容;如果length<旧值,会缩容,(截断)

被截断的元素,不能被找到,不会被回收,只能随数组 对象一起回收。

固定用法:在任意数组结尾追加一个新元素:

arr.[arr.length]=新值

案例1:输入姓名追加到数组,exit退出01

1     var    emps=[]; 2     var input; 3     while(true){ 4             input=prompt("请输入员工姓名:") 5             if(input!=="exit"){ 6                 emps[emps.length]=input; 7             }else{ 8                 break; 9             }10             };11             document.write(emps);

案例2:输入姓名追加到数组,exit退出02

1     var    emps=[];2     var input;3     while((input=prompt("请输入员工姓名:"))!=="exit"){4                 emps[emps.length]=input;5             };6             document.write(emps);

栈中的变量,声明周期:和堆完全不同!

var a=5;//全局变量随网页生命周期;

结论:局部变量的生命周期和所在方法的作用域环境栈有关。

作用域创建,局部变量一同创建

作用域结束,局部变量一同消失

什么是数组遍历:对数组中每个元素执行相同的操作

for(var i=0;i<arr.length;i++){

arr[i];//当前元素

}

关联数组:数组下标可以自定义名称!

何时使用关联数组:数组元素的内容无法描述自己的意义时,使用关联数组为每个元素 起名。

关联数字组的.length属性作废了。

for in:专门遍历关联数组使用!

for(var key in arr){

    //从第一个元素开始,将元素的key赋值给临时变量key

}

案例:范冰冰成绩单

1     var fbb=[];2     fbb["姓名"]="范冰冰"3     fbb["数学"]="90";4     fbb["语文"]="61";5     fbb["英语"]="95";6     for(var key in fbb){7         document.write(key+":"+fbb[key]+"
");8 }

 关联数组直接量定义方式:强调:大括号

{“key1”:"value1","key2":"value2",...}

案例:冒泡排序法(数组的遍历)

1     var arr=[5,3,2,6,4,9,8,7]; 2     for(var n=1;n<=arr.length;n++){ 3     for(var i=0;i
next){ 7 var box=arr[i]; 8 arr[i]=arr[i+1]; 9 arr[i+1]=box;10 }11 } 12 };

数组的常用方法:

x.toString()方法:任何对象都有toString()方法。将任何对象转为字符串,一般不主动调用,js在 需要时自动调用;默认用逗号作为分隔符。

x.valueOf()方法:同toString()

arr.join("分隔符"):将数组 转为字符串。可定义分隔符!

用法:将字符拼接为单词或句子

案例:拼接字符串

1     var chars=['H','E','L','L','O'];2     var str=chars.join("");3     document.write(str);

arr.concat(元素值,[数组],...):  将参数拆散成单个元素,追加到数组中。

不会修改原数组,只能返回新数组对象!

案例:arr.concat拼接案例

1     var arr1=[1,2,3];2     var arr2=[12,23,123];3     var newArr=arr1.concat(arr2);4     console.log(newArr);

var subArr=arr.slice(start,end+1):

截取下标从start开始,到end位置的元素生成子数组对象。**含头不含尾**

截取倒数第2个,到倒数第四个:arr.silce(newArr.length-4,newArr,length-2+1);

arr.splice:删除!插入!替换!

删除元素: arr.splice(strat,count);

替换元素: arr.splice(strat,count,值1,值2,值3,....);

插入元素:arr.splice(strat,0,值1,值2,值3,....);

 splice方法有返回值,返回的是删除的元素组成的新数组。

arr.reverse():颠倒所有数组元素

arr.sort():默认升序排列,默认都转为字符串排列。

转载于:https://www.cnblogs.com/Angche/p/7473442.html

你可能感兴趣的文章
《量化金融R语言初级教程》一2.3 使用真实数据
查看>>
《C++编程惯用法——高级程序员常用方法和技巧》——1.4 使用CRC卡片来辅助设计...
查看>>
《Adobe Flash CS6中文版经典教程》——1.10 修改内容和舞台
查看>>
《Python高手之路》——2.7 Christophe de Vienne访谈
查看>>
《iOS 6高级开发手册(第4版)》——1.10节秘诀:Core Motion基础
查看>>
《Ansible权威指南》一1.6 Ansible应用场景
查看>>
HTML超链接
查看>>
Netty知识笔记
查看>>
wampserver如何配置。
查看>>
架构的演进,阿里资深Java工程师表述架构的腐化之谜
查看>>
android中调用native的fork函数后的现象观察
查看>>
javascript模拟new的实现
查看>>
IDEA快捷键
查看>>
微信小程序模板介绍
查看>>
JDK源码阅读-Iterable接口
查看>>
【算法刷题】2:寻找两个有序数组的中位数
查看>>
Linux学习笔记(三)-Linux 磁盘与文件系统管理
查看>>
站在巨人的肩膀上
查看>>
阿里巴巴fastjson @JSONField 注解说明
查看>>
Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题
查看>>