一、do while循环
while:while(循环条件){循环体}
do while:do{循环体}while(循环条件)
他们之间的区别,如果只看第一次循环循环条件,如果都满足则两者没区别,如果第一次循环条件都不满足,则do while至少会循环一次,因为它的循环体在循环条件上面。
流程控制语句:break(用于循环和if等分支结构里,他是退出整个循环或分支)
continue(只是退出本次循环)
二、数组
1、索引数组:下标都是由数字组成的,自动生成的下标
2、关联数组:长度为0,自定义下标来便捷查找所需的元素
数组的创建方式:
1、直接量方式:var arr=[元素,元素,...]
2、构造函数:var arr=new Array()--如果括号里写的一个数字,相当于创建数组的长度,也可以直接放元素进去。
三个不限制:不限制元素的个数,不限制元素的类型,不限制下标越界
数组名.length:可以获得数组的长度。数组长度==最大下标+1
.length的三个固定用法:1、末尾添加元素:arr[arr.length]=添加的元素---一次只能添加一个
2、获取倒数第几个元素:arr[arr.length-n]---n自定义数字
3、缩容-删除元素:arr.length-=n;是从末尾开始删
关联数组:也叫hash数组,它的下标可以自定义的,它的length永远为0
创建:var arr=[]
添加:arr["自定义下标名"]=新元素
访问:arr["自定义下标名"];
遍历数组:索引数组:for(var i=0;i<arr.length;i++){arr[i]//当前次元素}
关联数组:for(var 下标名 in 数组名){ 数组名[下标名]}---这个也可以遍历索引数组
hash数组原理:基于hash算法,将字符串计算出一个尽量不重复的数字或地址值,字符串内容相同,则数字一定是一样的
js中所有的对象(引用类型)的底层都是hash数组
二、数组的API
1、连接符.join:可以将数组中的元素拼接在一起也可以将数组的元素用符号等连接在一起
例如将数组的元素拼接成一句话:var result=arr.join("")
将数组拼接成页面元素:
<body>
<select ></select>
<script>
var arr1=["-请选择-","北京","南京","东京","西京","中京"];
var sel=document.getElementsByTagName('select')[0];
//把数组的东西用join这个API来拼接好,然后给sel的页面内容
sel.innerHTML ="<option>"+arr1.join("</option><option>")+"</option>";
//拼接成页面元素是一个固定用法
</script>
</body>
2、拼接数组.concat: var new=arr.concat(值1,.....)
它可以数组中添加新元素或者添加一个整的数组(添加整的数组会把数组打散,变成元素添加)。它不会修改原数组,只会返回一个新数组。
<script type="text/javascript">
var arr=[1,2,3,4,5],
arr2=[6,6,6,6]
arr.concat(7,8,9)
console.log(arr)//结果为[1,2,3,4,5]
var newarr=arr.concat(7,8,9);
console.log(newarr)//结果为[1,2,3,4,5,7,8,9]
console.log(arr)//结果为[1,2,3,4,5]
var newarr2=arr.concat(arr2);
console.log(newarr2)//结果为[1,2,3,4,5,6,6,6,6]
console.log(arr)//结果为[1,2,3,4,5]
</script>
3、截取/获取子数组:.slice:var subArr=arr.slice(下标开始值,下标结束值+1);、
它截取的是含头不含尾,比如你要截取数组前三个下标开始值为0,结束值应为3;和拼接数组一样,不会修改原数组,只会返回一个新数组,这个新数组的内容就是你截取的内容
var arr=[1,2,3,4,5,6],
arr2=[6,6,6,6];
var newarr=arr.slice(0,2);
console.log(arr) //结果为[1,2,3,4,5,6]
console.log(newarr)//结果为[1,2]
var newarr1=arr.slice(1,2);
console.log(arr) //结果为[1,2,3,4,5,6]
console.log(newarr1)//结果为[2]
4、删除、添加、替换数组:.splice:var subArr=arr.splice(下标始值,n);--n是删除的个数
它删除也是有一个返回值。
添加:arr.splice(下标开始值,删除个数0,新值1,....);原下标开始的位置以及后续的元素都会向后移动;也可以插入数组,但是就变成了一个二维数组。
替换:var dels=arr.splice(下标开始值,删除个数,新值,..),删除的个数不一定等于插入的元素个数,
//删除
var arr=[1,2,3,4,5,6];
var newarr=arr.splice(1,2);//删除的是从下标1开始,到下标2结束
console.log(arr)//结果为[1,2,3,4,5,6]
console.log(newarr)//j结果为[2,3]
//添加
var arr=[1,2,3,4,5,6];
arr.splice(2,0,9,9,9,9);//从下标2开始,删除个数0个,添加4个元素,在下标2后面
console.log(arr)//结果为[1,2,9,9,9,9,3,4,5,6]
//替换
var arr=[1,2,3,4,5,6];
// var newarr= arr.splice(2,2,9,9,9,9);//从下标2开始,先删2个,再添加4个元素在下标2后面
// console.log(arr)//结果为[1,2,9,9,9,9,5,6]
// console.log(newarr)//结果为[3,4]就是删除掉的元素
var newarr= arr.splice(2,6,9,9,9,9);//从下标2开始,先删6个,再添加4个元素在下标2后面
console.log(arr)//结果为[1,2,9,9,9,9]
console.log(newarr)//结果为[3,4,5,6]就是删除掉的元素
5、翻转数组:arr.reverse();就是相当于把数组从掉头排序一下