数组的创建访问 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <script> var arr = new Array (); var arr = []; var arr1 = [1 ,2 ,'pink老师' ,true ]; console .log (arr1); console .log (arr1[2 ]); console .log (arr[3 ]); var arr2 = ['迪丽热巴' ,'古力娜扎' ,'佟丽娅呀' ]; console .log (arr2[0 ]); console .log (arr2[1 ]); console .log (arr2[2 ]); console .log (arr2[3 ]); </script>
遍历数组 遍历: 就是把数组中的每个元素从头到尾都访问一次
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <script> var arr = ['red' ,'green' ,'blue' ]; for (var i = 0 ; i < 3 ;i++) { console .log (arr[i]); } console .log (arr.length ); for (var i = 0 ;i < arr.length ;i++) console .log (arr[i]); </script>
计算数组的和以及平均值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <script> var arr = [2 ,6 ,1 ,7 ,4 ] var sum = 0 ; var average = 0 ; for (var i = 0 ;i < arr.length ;i++) { sum += arr[i]; } average = sum / arr.length ; console .log (sum,average); </script>
求数组中的最大值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <script> var arr = [2 ,6 ,1 ,77 ,52 ,25 ,7 ]; var max = arr[0 ]; for (var i = 1 ;i < arr.length ;i++) { if (arr[i] > max) { max = arr[i]; } } console .log ('该数组中的最大值是: ' + max); </script>
数组转换为字符串 1 2 3 4 5 6 7 8 9 10 11 12 <script> var arr = ['red' , 'green' , 'blue' , 'pink' ]; var str = '' ; var sep = '!' ; for (var i = 0 ;i < arr.length ;i++) { str += arr[i] + sep; } console .log (str); </script>
数组新增元素 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <script> var arr = ['red' ,'green' ,'blue' ]; console .log (arr.length ); arr.length = 5 ; console .log (arr); console .log (arr[3 ]); console .log (arr[4 ]); var arr1 = ['red' ,'green' ,'blue' ]; arr1[3 ] = 'pink' ; console .log (arr1); arr1[4 ] = 'hotpink' ; console .log (arr1); arr1[0 ] = 'yellow' ; console .log (arr1); arr1 = '有点意思' ; console .log (arr1); </script>
数组存放1~10个值 1 2 3 4 5 6 7 8 9 10 11 12 13 <script> var arr = []; for (var i = 0 ;i < 100 ;i++) { arr[i] = i + 1 ; } console .log (arr); </script>
筛选数组方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <script> var arr =[2 ,0 ,6 ,1 ,77 ,0 ,52 ,0 ,25 ,7 ]; var newArr = []; var j = 0 ; for (var i = 0 ; i < arr.length ;i++) { if (arr[i] >= 10 ) { newArr[j] = arr[i]; j++; } } console .log (newArr); var arr =[2 ,0 ,6 ,1 ,77 ,0 ,52 ,0 ,25 ,7 ]; var newArr = []; for (var i = 0 ; i < arr.length ;i++) { if (arr[i] >= 10 ) { newArr[newArr.length ] = arr[i]; } } console .log (newArr); </script>
删除数组指定元素(数组去重) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <script> var arr = [2 ,0 ,6 ,1 ,77 ,0 ,52 ,0 ,25 ,7 ]; var newArr = []; for (var i = 0 ;i < arr.length ;i++) { if (arr[i] != 0 ) { newArr[newArr.length ] = arr[i]; } } console .log (newArr); </script>
翻转数组 1 2 3 4 5 6 7 8 9 10 11 12 <script> var arr = ['red' ,'green' ,'blue' ,'pink' ,'purple' ]; var newArr = []; for (var i = arr.length -1 ;i >= 0 ;i--) { newArr[newArr.length ] = arr[i] } console .log (newArr) </script>
复习交换两个变量值 1 2 3 4 5 6 7 8 9 10 <script> var num1 = 'pink' ; var num2 = 'yellow' ; var temp; temp = num1; num1 = num2; num2 = temp; console .log (num1,num2) </script>
冒泡排序 冒泡排序:是一种算法,把一系列的数据按照一定的顺序进行排列显示(从小到大或从大到小)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <script> var arr = [4 ,1 ,2 ,3 ,5 ]; for (var i = 0 ;i <= arr.length - 1 ;i++) { for (j = 0 ;j <= arr.length - i - 1 ;j++) { if (arr[j] > arr[j+1 ]) { var temp = arr[j]; arr[j] = arr[j+1 ]; arr[j+1 ] = temp; } } } console .log (arr) </script>
函数的使用 函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <script> function sayHi ( ) { console .log ('hi~~' ); } sayHi (); </script>
函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口
利用函数求1~100累加和 1 2 3 4 5 6 7 8 9 10 11 <script> function getSum ( ) { var sum = 0 ; for (var i = 1 ;i <= 100 ;i++) { sum += i; } console .log (sum); } getSum (); </script>
函数的参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <script> function cook ( ) { console .log ('酸辣土豆丝' ); } cook (); cook (); function cook (aru ) { console .log (aru); } cook ('酸辣土豆丝' ); cook ('大肘子' ); </script>
利用函数求任意两个数的和以及累加和 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <script> function getSum (num1,num2 ) { console .log (num1 + num2); } getSum (1 ,3 ); getSum (3 ,8 ); function getSums (start,end ) { var sum = 0 ; for (var i = start;i <= end;i++) { sum += i; } console .log (sum); } getSums (1 ,100 ); </script>
函数形参和实参匹配问题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <script> function getSum (num1,num2 ) { console .log (num1 + num2); } getSum (1 ,2 ); getSum (1 ,2 ,3 ); getSum (1 ); </script>
函数的返回值return 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 <script> function cook (aru ) { console .log (aru); } cook ('大肘子' ); function getResult ( ) { return 666 ; } getResult (); console .log (getResult ()); function getSum (num1,num2 ) { return num1 + num2; } console .log (getSum (1 ,2 )); function getMax (num1,num2 ) { if (num1 > num2) { return num1; } else { return num2; } } console .log (getMax (1 ,3 )) function getArrMax (arr ) { var max = arr[0 ]; for (var i = 0 ;i <= arr.length ;i++) { if (arr[i] > max) { max = arr[i]; } } return max; } var re = getArrMax ([5 ,2 ,99 ,101 ,67 ,77 ]); console .log (re); </script>
return终止函数并且只能返回一个值
返回的结果是最后一个值(数组是一个值)
函数返回值注意事项 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <script> function getSum (num1,num2 ) { return num1 + num2; alert ('我是不会被执行的哦!' ) } console .log (getSum (1 ,2 )); function fn (num1,num2 ) { return num1,num2; } console .log (fn (1 ,2 )); function getResult (num1,num2 ) { return [num1+ num2,num1 - num2,num1 * num2,num1 / num2]; } var re = getResult (1 ,2 ); console .log (re); function fun1 ( ) { return 666 ; } console .log (fun1 ()); function fun2 ( ) { } console .log (fun2 ()); </script>
arguments使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <script> function fn ( ) { for (var i = 0 ; i < arguments .length ;i++) { console .log (arguments [i]); } } fn (1 ,2 ,3 ); fn (1 ,2 ,3 ,4 ,5 ); </script>
函数案例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 <script> function getMax ( ) { var max = arguments [0 ]; for (var i = 0 ;i < arguments .length ;i++) { if (arguments [i] > max) { max = arguments [i]; } } return max; } console .log (getMax (1 ,2 ,3 )); console .log (getMax (1 ,2 ,3 ,4 ,5 )); console .log (getMax (1 ,2 ,34 ,444 ,5 ,100 )); function reverse (arr ) { var newArr = []; for (var i = arr.length -1 ;i >= 0 ;i--) { newArr[newArr.length ] = arr[i]; } return newArr; } var arr1 = reverse ([1 ,3 ,4 ,6 ,9 ]); console .log (arr1); var arr2 = reverse (['red' ,'pink' ,'blue' ]); console .log (arr2); function sort (arr ) { for (var i = 0 ;i < arr.length - 1 ;i++) { for (var j = 0 ;j < arr.length - i - 1 ;j++) { if (arr[j] > arr[j + 1 ]) { var temp = arr[j]; arr[j] = arr[j+1 ]; arr[j + 1 ] = temp; } } } return arr; } var arr1 = sort ([1 ,4 ,2 ,9 ]); console .log (arr1); var arr2 = sort ([11 ,7 ,22 ,999 ]); console .log (arr2); function isRunYear (year ) { var flag = false ; if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ) { flag = true ; } return flag; } console .log (isRunYear (2000 )); console .log (isRunYear (1999 )); </script>
函数可以调用另外一个函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 <script> function fn1 ( ) { console .log (11 ); fn2 (); } fn1 (); function fn2 ( ) { console .log (22 ); } function backDay ( ) { var year = prompt ('请您输入年份:' ); if (isRunYear (year)) { alert ('当前年份是闰年2月份有29天' ); } else { alert ('当前年份是平年2月份有28天' ); } } backDay (); function isRunYear (year ) { var flag = false ; if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ) { flag = true ; } return flag; } </script>
函数的两种声明方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <script> function fn ( ) { } fn (); var fun = function ( ) { console .log ('我是函数表达式' ); console .log (aru); } fun ('pink老师' ); </script>
JavaScript作用域 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <script> var num = 10 ; console .log (num); function fn ( ) { var num = 20 ; console .log (num); } fn (); </script>
全局变量和局部变量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <script> var num = 10 ; console .log (num); function fn ( ) { console .log (num); } fn (); function fun ( ) { var num1 = 10 ; num2 = 20 ; } fun (); console .log (num2); </script>
作用域链 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <script> var num = 10 ; function fn ( ) { var num = 20 ; function fun ( ) { console .log (num); } fun (); } fn (); </script>
预解析 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <script> console .log (num); var num = 10 ; fn (); function fn ( ) { console .log (11 ); } fun (); var fun = function ( ) { console .log (22 ); } </script>
预解析案例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <script> f1 (); console .log (c); console .log (b); console .log (a); function f1 ( ) { var a = b = c = 9 ; console .log (a); console .log (b); console .log (c); } function f1 ( ) { var a; a = b = c = 9 ; console .log (a); console .log (b); console .log (c); } f1 (); console .log (c); console .log (b); console .log (a); </script>
对象
对象是一个具体的事物 在JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组.函数等。 对象是由属性和方法组成的。 属性:事物的特征,在对象中用属性来表示(常用名词) 方法:事物的行为,在对象中用方法来表示(常用动词)
利用对象字面量创建对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <script> var obj = { uname : '张三丰' , age : 18 , sex : '男' , sayHi : function ( ) { console .log ('hi~' ); } } console .log (obj.uname ); console .log (obj['age' ]); obj.sayHi (); </script>
变量属性函数方法的区别 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <script> var num = 10 ; var obj = { age : 18 , fn : function ( ) { } } function fu ( ) { } console .log (obj.age ); </script>
利用new Object创建对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <script> var obj = new Object (); obj.uname = '张三丰' ; obj.age = 18 ; obj.sex = '男' ; obj.sayHi = function ( ) { console .log ('hi~' ); } console .log (obj.uname ); console .log (obj['sex' ]); obj.sayHi (); </script>
构造函数创建对象 构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new 运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 <script> function Star (uname,age,sex ) { this .name = uname; this .age = age; this .sex = sex; this .sing = function (sang ) { console .log (sang); } } var ldh = new Star ('刘德华' ,19 ,'男' ); console .log (ldh.name ); console .log (ldh['sex' ]); ldh.sing ('冰雨' ); var zxy = new Star ('张学友' ,19 ,'男' ); console .log (zxy.name ); console .log (zxy.age ); zxy.sing ('李香兰' ); </script>
构造函数,如Stars(),抽象了对象的公共部分,封装到了函数里面,它泛指某一大类(class) 创建对象,如new Stars(),特指某一个通过 new 关键字创建对象的过程我们也称为对象实例化
new关键字执行过程和遍历对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 <script> function Star (uname,age,sex ) { this .uname = uname; this .age =age; this .sing = function (sang ) { console .log (sang); } } var ldh = new Star ('刘德华' ,18 ,'男' ); var obj = { name : 'pink老师' , age : 18 , sex : '男' , fn : function ( ) { } } console .log (obj.name ); console .log (obj.age ); console .log (obj.sex ); for (变量 in 对象) { } for (var k in obj) { console .log (k); console .log (obj[k]); } </script>
内置对象 JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象 内置对象就是指 JS 语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方注) 内置对象最大的优点就是帮助我们快速开发 JavaScript提供了多个内置对象:Math、 Date 、Array、String等
学会查阅MDN文档 学习一个内置对象的使用,只要学会其常用成员的使用即可,我们可以通过查文档学习,可以通过MDN/W3C来查询。
查阅该方法的功能
查看里面参数的意义和类型
查看返回值的意义和类型
通过 demo 进行测试
数学对象Math最大值方法 1 2 3 4 5 6 7 8 9 <script> console .log (Math .PI ); console .log (Math .max (1 ,2 ,5 )) console .log (Math .max (-1 ,-5 )) console .log (Math .max (1 ,2 ,'pop' )) console .log (Math .max ()); </script>
封装自己的数学对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <script> var myMath = { PI : 3.1415926 , max : function ( ) { var max = arguments [0 ]; for (var i = 1 ;i < arguments .length ;i++) { if (arguments [i] > max) { max = arguments [i]; } } return max; }, min : function ( ) { var min = arguments [0 ]; for (var i = 1 ;i < arguments .length ;i++) { if (arguments [i] < min) { min = arguments [i]; } } return min; } } console .log (myMath.PI ); console .log (myMath.max (1 ,5 ,9 )); console .log (myMath.max (1 ,5 ,9 )); </script>
Math绝对值和三个取整方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <script> console .log (Math .abs (1 )); console .log (Math .abs (-1 )); console .log (Math .abs ('-1' )); console .log (Math .abs ( 'pink' )); console .log (Math .floor (1.1 )); console .log (Math .floor (1.9 )); console .log (Math .ceil (1.1 )); console .log (Math .ceil (1.9 )); console .log (Math .ceil (1.1 )); console .log (Math .ceil (1.5 )); console .log (Math .ceil (1.9 )); console .log (Math .ceil (-1.1 )); console .log (Math .ceil (-1.5 )); </script>
Math随机数方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <script> console .log (Math .random ()); function getRandomInt (min, max ) { min = Math .ceil (min); max = Math .floor (max); return Math .floor (Math .random () * (max - min)) + min; } console .log (getRandomInt (1 ,10 )); var arr = ['张三' ,'张三丰' ,'张三丰子' ,'李四' ,'李思思' ,'pink老师' ]; console .log (arr[getRandomInt (0 ,arr,length - 1 )]); </script>
猜数字游戏 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <script> function getRandom (min,max ) { return Math .floor (Math .random () * (max - min + 1 )) + min; } var random = getRandom (1 ,10 ); while (true ) { var num = prompt ('你来猜? 输入1~10之间的一个数字' ); if ( num > random ) { alert ('你猜大了' ); } else if ( num < random ) { alert ('你猜小了' ); } else { alert ('你好帅啊,猜对了' ); break ; } } </script>
Date日期对象的使用
Date 对象和 Math 对象不一样,他是一个构造函数,所以我们需要实例化后才能使用
Date实例用来处理日期和时间1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <script> var arr = new Array (); var obj = new Object (); var date = new Date (); console .log (date); var date1 = new Date (2019 ,10 ,1 ); console .log (date1); var date2 = new Date ('2019-10-1 8:8:8' ); console .log (date2); </script>
格式化日期年月日星期 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <script> var date = new Date (); console .log (date.getFullYear ()); console .log (date.getMonth ()); console .log (date.getDate ()); console .log (date.getDay ()); var year = date.getFullYear (); var month = date.getMonth () + 1 ; var dates = date.getDate (); var arr = ['星期日' ,'星期一' ,'星期二' ,'星期三' ,'星期四' ,'星期五' ,'星期六' ]; var day =date.getDay (); console .log ('今天是: ' + year + '年' + month + '月' + dates + '日' + arr[day]); </script>
格式化日期时分秒 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <script> var date = new Date (); console .log (date.getHours ()); console .log (date.getMinutes ()); console .log (date.getSeconds ()); function getTime ( ) { var time = new Date (); var h = time.getHours (); h = h < 10 ? '0' + h : h; var m = time.getMinutes (); m = m < 10 ? '0' + m : m; var s = time.getSeconds (); s = s < 10 ? '0' + s : s; return h + ':' + m + ':' + s; } console .log (getTime ()); </script>
Date总的毫秒数(时间戳) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <script> var date = new Date (); console .log (date.valueOf ()); console .log (date.getTime ()); var date1 = +new Date (); console .log (date1); console .log (Date .now ()); </script>
倒计时
核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒相减,比如05 分减去25分,结果会是负数的。
用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数。
把剩余时间总的毫秒数转换为天、时、分、秒(时间戳转换为时分秒)转换公式如下: d = parselnt(总秒数/60/60/24); // 计算天数 h = parselnt(总秒数/60/60%24); // 计算小时 m = parselnt(总秒数/60 %60); // 计算分数 s = parselnt(总秒数%60); //计算当前秒数1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <script> function conutDown (time ) { var nowTime = +new Date (); var inputTiem = +new Date (time); var times = (inputTiem - nowTime) / 1000 ; var d = parseInt (times / 60 / 60 / 24 ); d = d < 10 ? '0' + d : d; var h = parseInt (times / 60 / 60 % 24 ); h = h < 10 ? '0' + h : h; var m = parseInt (times / 60 % 60 ); m = m < 10 ? '0' + m : m; var s = parseInt (times % 60 ); s = s < 10 ? '0' + s : s; return d + '天' + h + '时' + m + '分' + s + '秒' ; } console .log (conutDown ('2023-5-1 18:00:00' )); var date = new Date (); console .log (date); </script>
数组创建的两种方式 1 2 3 4 5 6 7 8 9 10 11 12 <script> var arr = [1 , 2 , 3 ]; console .log (arr[0 ]); var arr1 = new Array (2 ,3 ) console .log (arr1); </script>
检测是否为数组两种方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <script> function reverse (arr ) { if (arr instanceof Array ) { var newArr = []; for (var i = arr.length - 1 ;i >= 0 ;i--) { newArr[newArr.length ] = arr[i]; } return newArr; } else { return ' error 这个参数要求必须是数组格式[1,2,3]' } } console .log (reverse ([1 ,2 ,3 ])); console .log (reverse (1 ,2 ,3 )); var arr = []; var obj = {}; console .log (arr instanceof Array ); console .log (obj instanceof Array ); console .log (Array .isArray (arr)); console .log (Array .isArray (obj)); </script>
添加、删除数组元素 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 <script> var arr = [1 ,2 ,3 ]; arr.push (4 ,'pink' ); console .log (arr); arr.unshift ('red' ,'purple' ); console .log (arr); arr.pop (); console .log (arr); arr.shift (); console .log (arr); </script>
筛选数组 1 2 3 4 5 6 7 8 9 10 11 12 <script> var arr = [1500 ,1200 ,2000 ,2100 ,1800 ]; var newArr = []; for (var i = 0 ;i < arr.length ;i++) { if (arr[i] < 2000 ) { newArr.push (arr[i]); } } console .log (newArr); </script>
数组排序,获取数组元素索引 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <script> var arr = ['pink' ,'red' ,'blue' ]; arr.reverse (); console .log (arr); var arr1 = [13 ,4 ,77 ,1 ,7 ]; arr1.sort (function (a,b ) { return b - a; }); console .log (arr1); var arr = ['red' ,'green' ,'blue' ,'pink' ,'blue' ]; console .log (arr.indexOf ('blue' )); console .log (arr.lastIndexOf ('blue' )); </script>
数组去重案例 目标:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个,放到新数组中去重 核心算法:我们遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <script> function unique (arr ) { var newArr = []; for (var i = 0 ;i < arr.length ;i++) { if (newArr.indexOf (arr[i]) === -1 ) { newArr.push (arr[i]); } } return newArr; } var demo = unique (['c' ,'a' ,'z' ,'a' ,'x' ,'a' ,'x' ,'c' ,'b' ]); console .log (demo); </script>
数组转换为字符串 1 2 3 4 5 6 7 8 9 10 11 <script> var arr = [1 ,2 ,3 ]; console .log (arr.toString ()); var arr1 = ['green' ,'blue' ,'pink' ]; console .log (arr.join ()); console .log (arr1.join ('-' )); </script>
基本包装类型、字符串不可变 基本包装类型就是把简单数据类型包类成为复杂数据类型,这样基本数据类型就有了属性和方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <script> var str = 'andy' ; console .log (str.length ); var temp = new String ('andy' ); str = temp; temp = null ; var str = 'andy' ; console .log (str); str = 'red' ; console .log (str); var str = '' ; for (var i = 1 ;i <= 100 ;i++) { str += i; } console .log (str); </script>
根据字符返回位置和字符 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 <script> var str = '改革春风吹满地,春天来了' ; console .log (str.indexOf ('春' )); console .log (str.indexOf ('春' ,3 )); var str = "abcoefoxyozzopp" var index = str.indexOf ('o' ); var num = 0 ; while (index !== -1 ) { console .log (index); num++; index = str.indexOf ('o' ,index + 1 ); } console .log ('o出现的次数是:' + num); var str = 'andy' ; console .log (str.charAt (3 )); for (var i = 0 ;i < str.length ;i++) { console .log (str.charAt (i)); } console .log (str.charCodeAt (0 )); console .log (str[0 ]); var str = 'abcoefoxyozzopp' ; var o = {}; for (var i = 0 ;i < str.length ;i++) { var chars = str.charAt (i); if (o[chars]) { o[chars]++; } else { o[chars] = 1 ; } } console .log (o); var max = 0 ; var ch = '' ; for (var k in o) { if (o[k] > max) { max = o[k]; ch = k; } } console .log (max); console .log ('最多的字符是' + ch); </script>
拼接以及截取字符串 1 2 3 4 5 6 7 8 9 10 11 <script> var str = 'andy' ; console .log (str.concat ('red' )); var str1 = '改革春风吹满地' ; console .log (str1.substr (2 ,2 )); </script>
替换字符串以及转换为数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <script> var str = 'andyandy' ; console .log (str.replace ('a' ,'b' )); var str1 = 'abcoefoxyozzopp' ; while (str1.indexOf ('o' ) !== -1 ) { str1 = str1.replace ('o' , '*' ); } console .log (str1); var str2 = 'red,pink,blue' ; console .log (str2.split (',' )); var str3 = 'red&pink&blue' ; console .log (str3.split ('&' )); </script>
简单数据类型和复杂数据类型导读 简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型 string , number , boolean , undefined , null 引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型通过 new 关键字创建的对象(系统对象、自定义对象),如Object、Array、Date等1 2 3 4 5 6 7 <script> var timer = null ; console .log (typeof timer); </script>
堆栈空间分配区别: 1、栈(操作系统):由操作系统自动分配释放存放函数的参教值、局部变量的值等。其操作方式类似于数据结构中的栈,简单数据类型存放到栈里面 2、堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收,复杂数据类型存放到堆里面