//求数组中的最大值 functionmaxfun(arr) { //arr接受一个数组 var max = arr[0]; for (i = 1;i < arr.length;i++) { if (max < arr[i]) { max = arr[i]; } } return max; } //实参送一个数组过去 //用一个变量来接收 函数的返回结果 var re = maxfun([5, 22, 99, 101, 67, 77]);
functionfun () { console.log(arguments); //[1,2,3] for (var i = 0; i < arguments.length; i++){ console.log(argument[i]); } } fun(1,2,3);
arguments 是一个伪数组:
具有数组的 length 属性
按照索引的方式进行存储
没有真正数组的一些方法 pop(),push() 等
利用函数求任意个数的最大值:
functiongetMax () { var max = arguments[0]; for (var i = 1; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; }
var num = 10; fun(); functionfun () { console.log(num); //undefined var num = 20; } //预解析以后相当于执行了以下代码 var num; functionfun () { var num; console.log(num); //undefined num = 20; } num = 10; fun();
f1(); console.log(c); console.log(b); console.log(a); functionf1() { var a = b = c = 9; //相当于 var a = 9; b = 9; c = 9; //b 和 c 直接赋值,没有 var声明,作全局变量 //集体声明应用逗号隔开 var a = 9, b = 9, c = 9; console.log(a); // 9 console.log(b); // 9 console.log(c); // 9 }
//预解析以后相当于执行了以下代码 functionf1() { var a; a = b = c = 9; console.log(a); // 9 console.log(b); // 9 console.log(c); // 9 } f1(); console.log(c); //9 console.log(b); //9 console.log(a); //报错,因为b、c是全局变量,a是局部变量
var obj = { name: 'dora', age: 18, sex: 'woman', fn: function (){} } // for (变量 in 对象) for (var k in obj) { console.log(k); // 输出得到属性名name, age, sex console.log(obj[k]); // obj[k] 得到属性值,k不加引号噢 //按顺序依次输出:属性名和属性值 }
functiongetTime() { var time = newDate(); 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());
获取日期的总的毫秒数(时间戳):
从1970年1月1日开始起到现在的毫秒数
// 1. 通过 valueOf() getTime() var date = newDate(); console.log(date.valueOf()); console.log(date.getTime());
d = parseInt(总秒数/60/60/24); // 计算天数 h = parseInt(总秒数/60/60%24); // 计算小时 m = parseInt(总秒数/60%60); // 计算分数 s = parseInt(总秒数%60); // 计算当前秒数
// 下面转换时间 functioncountDown (time) { var nowTime = +newDate(); // 获取当前时间 var inputTime = +newDate(time); // 获取输入的时间 var times = (inputTime - 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(countDown('2020-4-7 16:00:00'));
ARRAY
检测是否为数组的两种方式:
// 1.instanceof var arr = []; consolo.log(arr instanceofArray); //true var obj = {}; consolo.log(obj instanceofArray); //false
var str = ’abcosidfnoiojisoo', var index = str.indexOf('o'); var num = 0; while(index !== -1) { console.log(index); num++; index = str.indexOf('red', index + 1); }
根据索引号返回字符:
方法名
作用
str.charAt(index)
返回指定位置的字符(index字符串的索引号)
str.charCodeAt(index)
获取指定位置处字符的ASCII码,判断用户按了哪个键
str[index]
获取指定位置处字符,h5, IE8+支持
例子:统计出现最多的字符和次数
核心算法:利用 charAt() 遍历这个字符串
把每个字符都存储给对象,若没有该属性就为 1,若存在了就 +1
var str = 'abcoefoxyozz'; var obj = {}; for (var i = 0; i < str.length; i++) { var chars = str.charAt(i); //chars 是字符串的每一个字符 if (obj[chars]) { obj[chars]++; // 属性存在则加一 } else { obj[chars] = 1; } }
var max = 0; var ch = ''; for (var k in obj) { if (obj[k] > max) { // k是属性名 max = obj[k]; // obj[k] 是属性值 ch = k; } }
字符串操作方法:
方法
说明
str.concat(str1,str2,str3…)
连接两个字符串,等效于 +
str.substr(start,length)
(start索引号, length取的个数)
str.replace(x, y)
(‘被替换的字符’, ‘替换为的字符’) 只会替换第一个
str.slice(start,end)
删除子字符串,(开始位置, 结束位置) end取不到
str.substring(start, end)
基本与 slice 相同,但不取负值
str.split(‘分隔符’)
join 把数组转换为字符串,split把字符串转化为数组
str.toUpperCase()
全部转换大写
str.toLowerCase()
全部转换小写
//把所有o都替换为i var str = 'ooooooooo'; while (str.indexOf('o') != -1) { str.replace('o','i'); } //分隔符举例 var str = 'green-red-pink-blue'; console.log(str.split('-')); //[green,red,pink,blue]