JavaScript06

  1. 数组的基础

  1. 创建数组

  1. 直接量

var arr=【值1,...】;

  1. 构造函数

var arr=new Array(值1,...);

这个方法有一个坑:

new Array(num);

这句话的意思是创建一个长度为num的数组,里面没有任何东西,只有无数的undefined

  1. 面试题

  1. 按值传递:

var a=31;

var b=a;

修改a、b变不变或者修改b,a变不变

  1. 传递类型

  1. 原始传递:

复制一个副本给对方,两者互不影响

  1. 引用传递

  1. js中不是原始类型就是引用类型(函数、数组都是引用类型)

  1. 因为引用类型很大,比原始类型大得多,不可能保存在变量本地,只是保存了一个地址值,其实是赋值了自己的地址值给对方,两者用的是同一个地址值,一个修改另一个也会变化

  1. 如何释放一个引用类型

  1. 一定要看清楚有几个变量引用着这个引用类型,每个变量都要释放后才能释放干净

  1. 在js底部有一个垃圾回收器,只有垃圾回收器的计数器为0时才会删除不要的数据

  1. 建议:我们的代码都要封装为一个函数,函数中的一切变量都会自动释放

  1. hash数组(关联数组)

如何使用

  1. 创建:2步

  1. 创建空数组:var arr=[];

  1. 为数组添加自定义下标并且赋值:arr["自定义下标"]=新值;

  1. 访问元素

  1. arr["自定义下标"];

  1. 强调

  1. 不能在使用for循环,必须使用for in循环

  1. for in不能称呼为一个循环,因为它不需要设置从哪里开始到哪里结束,纯自动化的,专门为了遍历hash数组存在的

  1. 不止能遍历hash数组,也能遍历索引数组

  1. 建议:索引数组依然是for,hash数组再使用for in

  1. hash数组原理

  1. hash算法:

将字符串,计算出一个尽量不重复的数字(地址值)字符串内容相同,则计算出来的数字也一定是相同的

  1. 添加元素:

将自定义下标交给hash算法,得到一个数字(地址值),直接将你要保存的数据放到此地址保存起来

  1. 获取元素:

将指定的自定义下标交给hash算法,得到一个和当初保存时一样的数字(地址值),通过此地址找到你当初保存的数据,取出来使用

  1. js里面一切的东西都是对象,万物皆对象,除了undefined和null

  1. 目的:

是为了对象做准备工作

  1. 数组API

  1. arr 转 str:

  1. var str=arr.join("自定义连接符");

  1. 固定套路:2个

  1. 将数组里面的内容拼接为一句话/单词

var arr=["h","e","l","l","o"," ","w","o","r","l","d"];

ar str=arr.join("");     //其实就是拼接了一个空字符串

console.log(str);

  1. 将数组拼接为DOM页面元素

var arr=["-请选择-","北京","南京","西京","东京","重庆"];   //拿数据

var str="<开始标签>"+arr.join("</结束标签><开始标签>")+"</结束标签>";    //将数组拼接为页面标签字符串

sel.innerHTML=str;     //innerHTML能够识别标签

  1. 数组拼接:

  1. 添加元素的新方式

  1. 将你传入的实参全部拼接到arr的末尾

  1. var newArr=arr.concat(新值1,arr1,...);

ii.  特殊:

  1. 不修改原数组,只会返回一个新数组

  1. concat支持传入数组参数,悄悄的将你传入的数组打散为单个元素再拼接

  1. 截取子数组:

  1. 根据你传入的开始下标截取到结束下标

var subArr=arr.slice(starti,endi+1);

  1. 特殊:

  1. 不修改原数组,只会返回一个新数组

  1. 含头不含尾

  1. endi可以省略不写,如果省略,会从starti位置一直截取到末尾

  1. starti也可以省略,如果两个实参都省略,那么会从头到尾完全的复制一份:此操作也叫做深拷贝

  1. 支持负数参数,-1代表倒数第1个

以上的API都是不修改原数组的

  1. 删插替:

  1. 删除:

  1. var dels=arr.splice(starti,n);//n代表删除的个数

  1. 特殊:

虽然他直接修改原数组,但是也有返回值,返回的是被删除的数据组成的一个新数组,因为考虑到有可能删除的东西刚好是需要的东西,哪怕没有删除也会返回一个空数组

  1. 插入:

  1. arr.splice(starti,0,新值,...);

  1. 特殊:

  1. 原starti位置的元素以及后续元素都会向后移动

  1. 尽量的不要插入一个数组,会导致我们的数组一些是一维,一些是二维,遍历的时候就非常不方便

  1. 替换:

  1. var dels=arr.splice(starti,n,新值,...);

  1. 特殊:

删除的个数和插入的个数不必相同

  1. 翻转数组:

arr.reverse();

  1. 数组排序:

  1. 笔试题:

  1. 冒泡排序:前一个元素和后一个元素进行对比,如果前一个>后一个,两者就交换位置,但是做完一轮发现只有最大的一个数字到了最后,所以再开循环反复使用

  1. 固定公式:

  1. 正式开发时:

  1. arr.sort();

默认:将数组中的元素转为字符串后,再按位PK每个字符的unicode号(ASCII码)

  1. 按照数字升序排列:

  1. 按照数字降序排列:

以上的API都会修改原数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值