1、冒泡排序
让一个数字和后面的数字进行依次的比较,如果发现前面的大于后面的,就把前面的和后面的进行位置互换,外层从0开始,内层从0+1开始。
代码:
var arr = [7,8,1,4,5,6,2,3,5];
for (var i=0 ;i<arr.length;i++){
//8 //1
for (var j =i+1;j<=arr.length;j++){
if (arr[i]>arr[j]){
var c = arr[i];
arr[i] = arr[j];
arr[j] = c;
// document.write(arr+'<br>');//可以看到每次的变化
}
}
}
document.write(arr);
调用封装好的方法 升序:
var arr = [7,8,1,4,5,6,2,3,5];
arr.sort();
document.write(arr);
调用封装好的方法 降序:
var arr = [7,8,1,4,5,6,2,3,5];
arr.sort(function (a, b) {
return b-a;
})
document.write(arr);
2、js内置对象上
1、什么是对象
js是一个基于对象和事件驱动的脚本语言。
我们在操作任何一个东西之前,都可以称这个东西是对象
2、对象包含由什么构成
对象有属性和方法构成。
1、属性:
是静态的具有某个特性的统称呼:
比如:把狗看做一个对象,
颜色就是它的属性
2、方法:
方法是动态的行为操作,
比如:把狗看做一个对象,
黑色就是它的方法,
跑就是他的方法,
叫就是他的方法。
3、方法
上面我们已经大概了解了方法。
方法在代码中的体现就是用函数来体现。
4、内置对象
就是js这个语言,开发者已经写好的对象,我们通过这个对象直接就可以调用这些方法来完成某些操作。
1、比如我们上篇博客的数组,数组就是一个对象,我们用到的arr.push(), arr.unshif(). arr.splice()等,就是对象的方法,我们直接来调用了。arr.length就是对象的属性
2、代码中区分属性和方法,就看有没有小括号,有小括号就是方法,没有就是属性。
5、内置对象之 Array对象
1、Array(数组)对象
数组:具有相同类型的一个或者多个值的集合。
2、创建数组的方法:
1.var 数组名 = [元素1,元素2.....];
2.var 数组名 = new Array(元素1,元素2.....);
js中严格区分大小写
比如上面创建数组的第二种方法,如果把Arry写为arry,则不是一个数组。
3、array对象的属性和方法:
属性:
length 设置或者返回数组中元素的数量。
设置数组长度:
数组名.length = 长度;
例子:
var arr = new Array(1,2,3,4,5);
arr.length=4;
document.write(arr);
此时只能在页面显示1,2,3,4因为设置了数组的长度是4.
方法:
1、join( );
通过一个分隔符,把数组内的所有元素拼接成一个字符串。
例子:
var arr = [1,2,3,4,5];
document.write(arr.join('-'));//输出:1-2-3-4-5
2、sort();
1、对数组进行排序,升序。
var arr = [6,2,4,5,3];
document.write(arr.sort());//输出:2,3,4,5,6
2、对数组进行排序,降序
var arr = [5,4,6,3,2];
arr.sort(function (a, b) {
return b-a;
})
document.write(arr);//6,5,4,3,2
代码中:
a代表比的数,b代表被比的数。
3、打乱一个数组(了解)
var arr = [1,2,3,4,5,6,7,8];
arr.sort(function (a, b) {
return Math.random()>0.5?a-b:b-a;
})
document.write(arr);
其中Math.random()方法生成的是一个随机数,范围是0-1之间,我们用三目运算符进行判断,所以>0.5的概率是50%,如果大于,就让ab互换位置,如果小于,就让b-a互换位置,底层运用的还是冒泡排序,一个个的进行比较。
4、push
向数组末尾添加一个或多个新的元素,并自动更新数组长度。
添加多个:
var arr = [1,2,3,4,5,6,7,8];
arr.push(11,12,13,14,15);
document.write(arr);//显示:1,2,3,4,5,6,7,8,11,12,13,14,15
5、concat
合并两个数组,把两个数组合并起来:
语法:
合并的数组名.concat(被合并的数组名);
代码示例:
// 合并数组
var arr1 = [1,2,3,4];
var arr2 = [5,6,7,8];
var arr1 =arr1.concat(arr2);
document.write(arr1);//输出:1,2,3,4,5,6,7,8
6、splice
语法:
数组名.splice(a,b); a从哪里开始删除,b删除几个。
7、判断一个数组里面a的出现次数
<script>
var arr=["b",'a','c','a','g','j','a','c','b'];
var indxt = 0; //用来计数
for (var i = 0;i<arr.length; i++){
if (arr[i]=== 'a'){
indxt++;
}
}
document.write(indxt);
</script>
8、给一个数组去重并排序var arr=[5,4,26,9,4,8,5,14];
代码:
<script>
var arr=[5,4,26,9,4,8,5,14];
for (var i = 0; i<arr.length; i++){
for (var j = i+1;j<=arr.length; j++){
if (arr[i]==arr[j]){
arr.splice(j,1);
j--;
}
}
}
arr.sort(function (a, b) {
return b-a;
})
//arr =arr.sort();
document.write(arr);
</script>
6、内置对象之:Data
Data对象是一个日期对象,里面包含了很多和日期相关的方法和属性。
1、创建Data对象
var 变量名 = new Data();
变量名就是我们的日期对象。(用变量名接收了)
举例:
var data = new Data();
2、Data对象的方法
方法:
getFullYear() 返回 Date 对象的年份,其值为4位数
getMonth() 返回 Date 对象的月份,其值介于0~11之间(注:0-1月份)
getHours() 返回 Date 对象的小时数,其值介于0~23之间
getHours() 返回 Date 对象的小时数,其值介于0~23之间
getMinutes() 返回 Date 对象的分钟数,其值介于0~59之间
getSeconds() 返回 Date 对象的秒数,其值介于0~59之间
getDay() 返回 Date 对象的星期中的每一天,其值介于0~6之间(注:0-周日)
3、判断第几天以后是星期几
<script>
var date = new Date();
var dayArr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
document.write(dayArr[(date.getDay()+10)%7]);
</script>
4、做一个简易的时钟
setIntrval(函数,时间),无限循环,每隔多少毫秒执行一次函数
代码:
每100毫秒就在页面写一个1.
setTimeout(函数,时间),多长时间后执行一次该函数,只执行一次
代码:
setTimeout(function () {
document.write(1)
},1000)
1000毫秒后写一次1,只写一次。
代码:
<body>
<div></div>
<script>
var di = document.getElementsByTagName('div')[0];
setInterval(function () {
var date = new Date();
var year = date.getFullYear();//年
var mon = date.getMonth();//月
var da = date.getDate();//日
var hou = date.getHours();//时
var min = date.getMinutes();//分
var sen = date.getSeconds();//秒
var day = date.getDay();//星期几
di.innerHTML = year+'年'+mon+'月'+da+'日'+hou+':'+min+':'+getTime(sen)+'  '+'星期'+getTime(day);
// document.write(year+'年'+mon+'月'+da+'日'+hou+':'+min+':'+sen+'  '+'星期'+day);
},100)
function getTime(time) {
return time<10?'0'+time:time;
}
</script>
</body>