Math、数组、Date练习
2017-12-18 本文已影响0人
头大如牛
Math任务
1、写一个函数,返回从min到max之间的 随机整数,包括min不包括max
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
2、写一个函数,返回从min都max之间的 随机整数,包括min包括max
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
3、写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
function getRandStr(len){
//补全函数
var str = '';
var dict = '0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ';
for(var i = 0; i < len; i++) {
str += dict[getRandomInt(0, 62)];
}
return str;
}
var str = getRandStr(10); // 0a3iJiRZap
4、写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255
// 声明整数随机数函数
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
function getRandIP(){
//补全
var arr = [];
for(var i = 0; i < 4; i++) {
arr.push(getRandomInt(0, 256));
}
return arr.join('.'); //在数组元素之间添加.
}
var ip = getRandIP()
console.log(ip) // 10.234.121.45
5、写一个函数,生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff
// 声明随机整数函数
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
// 声明随机字符串对象
var dict = '0123456789abcdef';
// 随机颜色函数
function getRandColor(){
var randomColor = '#';
for(var i = 0; i < 6; i++) {
randomColor += dict[getRandomInt(0, 16)];
}
return randomColor;
}
var color = getRandColor()
console.log(color) // #3e2f1b
数组任务
1、数组方法里push、pop、shift、unshift、join、splice分别是什么作用?用 splice函数分别实现push、pop、shift、unshift方法
push:向数组末尾添加一个或多个元素;
pop:删除并返回数组的最后一个元素;
unshift:向数组开头添加一个或多个元素,并返回新的长度;
shift:删除并返回数组的第一个元素;
join:把所有的数组元素放入一个字符串,通过指定的分隔符进行拼接;
splice:删除数组中的元素,并向数组中添加新的元素;
arr.splice(arr.length,0,'string') //等同于push
arr.splice(arr.length-1,1) //等同于pop
arr.splice(0,1) //等同于shift
arr.splice(0,0,'string') //等同于unshift
2、写一个函数,操作数组,数组中的每一项变为原来的平方,在原数组上操作
function squareArr(arr){
for(var i = 0; i < arr.length; i++) {
arr[i] = arr[i] * arr[i];
}
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(arr) // [4, 16, 36]
3、写一个函数,操作数组,返回一个新数组,新数组中只包含正数,原数组不变
function filterPositive(arr){
if(typeof arr === 'number') {
return arr > 0;
}
}
var arr = [3, -1, 2, '饥人谷', true]
var newArr = filterPositive(arr)
console.log(newArr) //[3, 2]
console.log(arr) //[3, -1, 2, '饥人谷', true]
Date 任务
1、 写一个函数getChIntv,获取从当前时间到指定日期的间隔时间
function getChIntv(value) {
var targetDate = new Date(value);
var curDate = new Data();
var offset = Math.abs(targeDate - curDate);
var totalSeconds = Math.floor(offset/1000);
var second = Math.abs(offset/1000)%60;
var totalMinutes = Math.floor(offset/1000/60);
var minutes = totalMinutes % 60;
var totalHours = Math.floor(totalMinutes/60);
var hours = totalHours % 24;
var totalDays = Math.floor(totalHours/24)
return totalDays = '天' + hours + '小时' + minutes + '分' + second + '秒';
}
var str = getChIntv("2017-02-08");
console.log(str); // 距除夕还有 20 天 15 小时 20 分 10 秒
2、把hh-mm-dd格式数字日期改成中文日期
2、把hh-mm-dd格式数字日期改成中文日期
function getChsDate(value) {
var dict = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
var arr = value.split('-');
var year = '';
var month = '';
var day = '';
var string = '';
Array.prototype.forEach.call(arr[0], function(x) {
year += dict[x];
});
Array.prototype.forEach.call(arr[1], function(x, i) {
if (x === 0 && i === 0) {
month += '';
}
if (x === 1 && i === 0) {
month += '十';
} else if (x !== 0 && i !== 0) {
month += dict[x];
}
});
Array.prototype.forEach.call(arr[2], function(x, i) {
if (x === 0 && i === 0) {
}else if (x === 1 && i === 0) {
day += '十';
}else if (x === 2 && i === 0) {
day += '二十';
}else if (x === 3 && i === 0) {
day += '三十';
} else if (x !== 0 && i !== 0) {
day += dict[x];
}
});
return string = year + '年' + month + '月' + day + '日';
}
var str = getChsDate('2015-01-08');
console.log(str); // 二零一五年一月八日
3、写一个函数,参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数t,根据t的时间分别返回如下字符串:
- 刚刚( t 距当前时间不到1分钟时间间隔)
- 3分钟前 (t距当前时间大于等于1分钟,小于1小时)
- 8小时前 (t 距离当前时间大于等于1小时,小于24小时)
- 3天前 (t 距离当前时间大于等于24小时,小于30天)
- 2个月前 (t 距离当前时间大于等于30天小于12个月)
- 8年前 (t 距离当前时间大于等于12个月)
function friendlyDate(time){
var timeDiff = new Date().getTime() - time;
var min=timeDiff/(1000*60);
var hour=timeDiff/(1000*60*60);
var day=timeDiff/(1000*60*60*24);
var month=timeDiff/(1000*60*60*24*30);
var year=timeDiff/(1000*60*60*24*30*12);
if(min > 0 && min < 1){
return "刚刚";
}else if(min >= 1 && hour < 1){
return '三分钟前';
}else if(hour >= 1 && hour < 24){
return '8小时前';
}else if(hour >= 24 && day < 30){
return '三天前';
}else if (day >= 30 && month < 12){
return '2个月前';
}else if (year >= 1){
return '8年前';
}
}
var str = friendlyDate( '1484286699422' ) // 1分钟前
var str2 = friendlyDate('1483941245793') //4天前