首页 > 代码库 > js4
js4
程序=数据结构+算法
好的数据结构,可极大提高程序的执行效率
相关的多个数据应集中存储,集中管理
分类和排序
数组:一组连续的变量组成的集合——统一起一个名字
批量管理多个数据
如何使用:创建 赋值 取值
1. 创建:4种:
1. var 变量名=[];-->创建一个空数组对象
2. var 变量名=[值1,值2,...]-->创建数组同时,为数组指定初始元素(数组中每个值)
数组是引用类型的对象
变量中保存了数组对象的地址值,也成引用了数组对象
3. var arr=new Array();-->创建一个空数组对象
new:创建一个新对象,并返回新对象地址
Array:js中的数组类型
new Array()-->创建一个数组类型的新对象,并返回新对象的地址。
4. var arr=new Array(n);-->创建n个元素的数组
new Array(值1,值2,...)
找到数组:使用变量等效于直接使用变量引用的数组对象
数组对象中,每个元素都有一个下标:每个元素的位置号
下标从0开始,到元素个数-1结束
使用数组中的每个元素:
数组变量[i]-->获得i位置元素中的值
*数组变量[i]的用法和普通变量完全一样!*
2. 赋值:数组变量[i]=新值;
3. 取值: 数组变量[i]
null和undefined:
undefined: 是所有没有值得变量的默认值,自动赋值
null: 主动释放一个变量引用的对象
何时使用null:
当使用完一个较大的对象时,主动释放对象总是好的习惯
垃圾回收器:专门释放对象内存的一个程序
在底层,后台,伴随当前程序同时运行
引擎会定时自动调用垃圾回收期
总有一个对象不再被任何变量引用时,才释放
js数组 vs 其他语言的数组:
*js数组下标越界不会出错!*
为不存在的位置赋值:不会出错!会自动创建指定下标的新元素。
从不存在的位置取值:不会出错!也不会增加新元素
而是返回undefined
数组是对象:封装了一组数据,并提供了对数据的操作方法
.length属性:获得数组中的元素个数!=实际的元素个数
何时使用:3种:
arr[arr.length-1]: 获得任意长度数组中的最后一个元素
arr[arr.length]=新值: 向数组末尾追加一个新元素
改小length的值,可删除末尾元素
2. 数组遍历:从下标0位置开始,依次取出每个元素,反复执行相同的操作。
三要素:
1. 循环条件:下标i<arr.length
2. 循环变量:下标i,
从0开始,每次增1,到arr.length-1结束
3. 循环体:xxx
3. 关联数组:可以自己定义下标名称的数组
索引数组:自动生成下标的数组都是索引数组
为什么:["范冰冰", 91, 65, 95]
sname shx yuw eng
如何创建关联数组: var fbb=[];
key value 对儿
fbb["sname"]="范冰冰";
fbb["shx"]=91;
如何访问关联数组中的元素:fbb["sname"]
关联数组中的.length属性失效!
关联(hash)数组: 下标是不能重复的
优势:利用Hash算法,精确定位某个下标的位置
不用遍历
索引数组:缺:下标自动分配,无意义
要想按内容查找元素,只能从头开始遍历!
遍历关联数组:依次遍历arr中每个元素,
将当前元素的下标存入key中
for(var key in arr){
key,仅得到当前元素的下标
arr[key],得到当前元素的值!
}
4. ***冒泡排序:——手写
5. *数组API:数组=数据+操作数据的API
1. 数组 to String:2种:
var str=arr.toString();
-->输出数组中的内容,每个元素用逗号分隔
-->自动调用
var str=arr.join("连接符")
-->输出数组中的内容,自定义元素间连接符
何时使用:2种固定套路
1. 将字符组成单词:arr.join("")
2. 将单词组成句子:arr.join(" ")
2. 拼接和截取:*API无法直接修改原对象,而返回新对象*
拼接:var newArr=arr.concat(另一个数组,值1,值2...)
复制子数组:var subArr=arr.slice(starti,endi+1);
含头不含尾
3. splice: 删除 插入 替换
1. 删除:直接修改原数组对象
[var deleted=]arr.splice(starti,删除个数)
返回本次删除元素组成的数组
2. 插入:
arr.splice(starti,0,新值1,...)
3. 替换:
arr.splice(starti,删除个数,新值1,...)
4. arr.reverse(); 颠倒数组中所有元素
js4