冒泡排序
用例子比较好理解:
var arry=[7,2,6,3,4,1,8];
//拿出第一位数7和后面依次比较,遇到大的8就换位,8再与后面依次比较,没有能和8换位的数,再从下一位2依次与下面的数比较。
console.log('排列之前:'+arry);
for (var i=0; i<arry.length; i++){
for (var j=i+1; j<arry.length; j++){
if (arry[i]<arry[j]){
//换位
var b=arry[i];
arry[i]=arry[j];
arry[j]=b;
}
}
}
console.log('排列之后:'+arry);
就这么简单,这就是冒泡排序。
对于排序我们也可以直接使用js封装好的sort()方法:
//调用封装好的sort()方法:
var arry=[7,2,6,3,4,1,8,5,9];
//升序(直接数组名.sort()):
arry.sort();
console.log(arry);
有升序就有降序:
//降序:
arry.sort(function (a,b){
return b-a;
});
console.log(arry);
数字排序我们就用function,为啥呢,因为正序直接.sort()有时候不适用,不信?那我们再写写看看:
var arry=[1,2,3,5,6,10,11];
arry.sort();
console.log(arry);
10.11这俩哥们就上去了。
因为我们用sort简单转,它转的是什么,是字符编码的顺序进行排序的,看ASCII 表,数字给你转成一个十进制,但它又会去底层进行二进制的转换,就像2>10>11,
知道就行,直接用function就不会出现这种情况,倒序return的是b-a,正序换成a-b就行了。
//字符串也可以排序,如果是字符串排序没必要用function.
var arry=['c','a','b','d','f','e'];
arry.sort();
console.log(arry);
什么是对象/对象的属性以及方法
万物皆对象,不管是变量还是乱七八糟的值都可以当做对象,数组也是对象。比如:
var arry=[1,2,3,5,6,10,11];
console.log(typeof arry);
typeof可以查看属性
object啥意思不用多说了吧。
对象可以有两部分:
①属性://死的东西。
②方法://活的东西。
什么活的死的?比如一个桌子,有长宽高这几个属性,每个属性可以有不同的值,长宽高是死的吧,还不明白?听听啥是活的就明白了,就是你这个桌子可以干什么,可以做餐桌,可以做会议桌…
再举个例子,冰箱这个对象,有属性:冷藏,冷冻…有方法:可以冷藏水果,可以冷冻肉类…
明白了吧,它能干什么,我们就可以给它写一套方法,后面还有封装,我们把这个方法封装好,用的时候直接调用就可以了,就像我们上面用的typeof,它为什么能看出类型,本质上就是人家提前写好的方法,封装好,我们直接拿来用了,OK,明白了。
Arry对象
1.Array(数组)对象,
//相当于声明了一个Array对象
var arr =new Array(2,3,4,5);
console.log(arr);
//像我们前面说的,数组都有长度,数组名.length,指定它有多长,它就只能放多少
比如我们: arr.length =3;
它就只能放三组,我们后面规定的它放不进去
我们前面说了对象有方法,那Array是对象,肯定也有方法,我们主要介绍这几个方法(还有很多直接去查官方的文档看):
那怎么调用方法呢,对象名.方法就好了。
join()方法
//通过一个分隔符,把数组内所有元素拼成一个字符串。
var arr=[1,2,3,5,6];
arr =arr.join('-');
console.log(arr);
//然后就变成了一个string类型
arr.join('')中用什么就用什么分隔开,也可以直接为空。
//拼接后得到的是一个新内容,并不会修改原始数组。
push()方法
向数组中加内容,修改原始数组,没什么好说的。
sort()方法
排序方法,前面说过了,也是修改了原始数组。
concat()方法
拼接数组
//a.concat(b);a来合并b
var a=[1,2,3];
var b=[100,110,120];
c = a.concat(b);
console.log(c);
如果要打印看结果,别忘了用个变量接收。
谁合并谁,谁就放在前面。
那既然合并了直接log a不就好了,好,来看看console.log(a);
说明他合并后并没有修改原始数组。
splice()方法
//splice(a,b);从下标a处开始删除,往后删除b个
var a=[100,200,300,400,500,600];
a.splice(2,3);
console.log(a);
直接log a出结果,说明改变了原始数组。
还有一个比较好玩的随机数random(),随便用个变量接收:
var a= Math.random();
console.log(a);
它是随机生成一个0-1之间的随机数。
可以在输出时*10,使用round()、ceil()、floor()和parseInt()取整,作为一些限制条件输出,之前好像说过,在复习下:
其中round()是四舍五入取整,ceil() 是向上取整,floor() 是向下取整,parseInt() 只取整数部分。
还可以使用别的方法作为限制条件,写一些好玩的东西,尽情发挥想象。