Math
1. 寫一個(gè)函數(shù),返回從min到max之間的 隨機(jī)整數(shù)侦副,包括min不包括max
function random(min,max){
return min+Math.floor(Math.random() * (max - min));
}
var arr=[];
for(var i=0;i<20;i++){
arr.push(random(1,5))
}
console.log(arr);
2. 寫一個(gè)函數(shù)豆村,返回從min都max之間的 隨機(jī)整數(shù),包括min包括max
function random(min,max){
return min+Math.floor(Math.random() * (max - min+1));
}
var arr=[];
for(var i=0;i<20;i++){
arr.push(random(1,5))
}
console.log(arr);
3. 寫一個(gè)函數(shù)脸秽,生成一個(gè)長度為 n 的隨機(jī)字符串儒老,字符串字符的取值范圍包括0到9,a到 z记餐,A到Z驮樊。
function getRandStr(len){
//補(bǔ)全函數(shù)
var dict = '0123456789abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
var randStr = ''
for(var i=0;i<len;i++){
randStr+=dict[random(0,62)] //Math.floor(Math.random()*dict.length)
}
return randStr;
}
var str = getRandStr(10); // 0a3iJiRZap
console.log(str);
4. 寫一個(gè)函數(shù),生成一個(gè)隨機(jī) IP 地址,一個(gè)合法的 IP 地址為 0.0.0.0~255.255.255.255
function getRandIP(){
//補(bǔ)全
var arr = [];
for(var i=0;i<4;i++){
arr.push(random(0,256));
}
return arr.join('.');
}
var ip = getRandIP()
console.log(ip) // 10.234.121.45
5. 寫一個(gè)函數(shù)囚衔,生成一個(gè)隨機(jī)顏色字符串挖腰,合法的顏色為#000000~ #ffffff
function getRandColor(){
var dict = '0123456789abcdef'
var str = ''
for(var i=0;i<6;i++){
str+=dict[random(0,16)]//Math.floor(Math.random()*dict.length)
}
colorStr = '#'+str;
return colorStr;
}
var color = getRandColor()
console.log(color) // #3e2f1b
數(shù)組
1. 數(shù)組方法里push、pop练湿、shift猴仑、unshift、join鞠鲜、splice分別是什么作用宁脊?用 splice函數(shù)分別實(shí)現(xiàn)push、pop贤姆、shift榆苞、unshift方法
方法 | 用法 | 作用 |
---|---|---|
push | Array.push(str) |
在數(shù)組尾部添加一個(gè)或多個(gè)元素 |
pop | Array.pop() |
在數(shù)組尾部彈出一個(gè)或多個(gè)元素,并返回(對空數(shù)組則返回undefined ) |
shift | Array.shift() |
將數(shù)組的第一個(gè)元素從原數(shù)組中刪除霞捡,并返回被刪除的元素的值(對空數(shù)組則返回undefined ) |
unshift | Array.unshift(str) |
向數(shù)組的頭部添加一個(gè)或更多元素坐漏,并返回新的長度 |
join | Array.join(separator) |
將數(shù)組各個(gè)元素是通過指定的分隔符進(jìn)行連接成為一個(gè)字符串 |
splice | Array.splice(index, howmany, element1,.....,elementX) |
用于插入、刪除或替換數(shù)組的元素碧信。 |
- splice函數(shù)分別實(shí)現(xiàn)push方法
var arr=new Array(1,2,3,4,5)
arr.push(100)
console.log(arr) //[1, 2, 3, 4, 5, 100]
arr.splice(6,0,'jirengu') //靈活的寫法arr.splice(arr.length,0,item)
console.log(arr) //[1, 2, 3, 4, 5, 100, "jirengu"]
- splice函數(shù)分別實(shí)現(xiàn)pop方法
var arr=new Array(1,2,3,4,5)
arr.pop()
console.log(arr) //[1, 2, 3, 4]
arr.splice(3,1) //靈活的寫法arr.splice(arr.length-1,1)
console.log(arr) //[1, 2, 3]
- splice函數(shù)分別實(shí)現(xiàn)shift方法
var arr=new Array(1,2,3,4,5)
arr.shift() //1
console.log(arr) //[2, 3, 4, 5]
arr.splice(0,1)
console.log(arr) //[ 3, 4, 5]
- splice函數(shù)分別實(shí)現(xiàn)unshift方法
var arr=new Array(1,2,3,4,5)
arr.unshift(100) //6(數(shù)組長度)
console.log(arr) //[100,1, 2, 3, 4, 5]
arr.splice(0,0,'jirengu')
console.log(arr) //["jirengu", 100, 1, 2, 3, 4, 5]
2. 寫一個(gè)函數(shù)赊琳,操作數(shù)組,數(shù)組中的每一項(xiàng)變?yōu)樵瓉淼钠椒脚椴辏谠瓟?shù)組上操作
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. 寫一個(gè)函數(shù)躏筏,操作數(shù)組,返回一個(gè)新數(shù)組呈枉,新數(shù)組中只包含正數(shù)趁尼,原數(shù)組不變
function filterPositive(arr){
var newArr = [];
for(var i=0;i<arr.length;i++){
if(typeof arr[i] === 'number'){
if(arr[i]>0){
newArr.push(arr[i]);
}
}
}
return newArr
}
var arr = [3, -1, 2, '饑人谷', true]
var newArr = filterPositive(arr)
console.log(newArr) //[3, 2]
console.log(arr) //[3, -1, 2, '饑人谷', true]
ES5數(shù)組拓展
function filterPositive(arr){
return arr.filter(function (value) {
return (typeof value === "number") && ( value > 0);
});
}
var arr = [3, -1, 2, '饑人谷', true]
var newArr = filterPositive(arr)
console.log(newArr) //[3, 2]
console.log(arr)
Date
1. 寫一個(gè)函數(shù)getChIntv,獲取從當(dāng)前時(shí)間到指定日期的間隔時(shí)間
function getChIntv(dateStr){
var targetDate = new Date(dateStr);
var curDate = new Date();
var offset = Math.abs(targetDate-curDate);
var totalsecond = Math.floor(offset/1000);
var seconds = totalsecond%60;
var totalMinutes = Math.floor((offset/1000)/60);
var mintues = totalMinutes%60;
var totalHours = Math.floor(((offset/1000)/60)/60);
var hours = totalHours%24;
var totalDays = Math.floor((((offset/1000)/60)/60)/24);
return '距除夕還有'+totalDays+'天'+hours+'小時(shí)'+mintues+'分鐘'+seconds+'秒';
}
var str = getChIntv("2018-02-15");
console.log(str); // 距除夕還有156天9小時(shí)48分鐘23秒
2. 把hh-mm-dd格式數(shù)字日期改成中文日期
function getChsDate(date){
var dict = ['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一'];
var arr = [];
var newArr = date.split('-');
var year = newArr[0];
for(var i = 0; i < year.length; i++){
arr.push(dict[year[i]]);
}
arr.push("年");
arr.push(dict[parseInt(newArr[1],10)]);
arr.push("月");
arr.push(dict[parseInt(newArr[2],10)]);
arr.push("日");
var newArr = arr.join('');
return newArr
}
var str = getChsDate('2015-01-08');
console.log(str); // 二零一五年一月八日
3. 寫一個(gè)函數(shù)猖辫,參數(shù)為時(shí)間對象毫秒數(shù)的字符串格式酥泞,返回值為字符串。假設(shè)參數(shù)為時(shí)間對象毫秒數(shù)t啃憎,根據(jù)t的時(shí)間分別返回如下字符串:
剛剛( t 距當(dāng)前時(shí)間不到1分鐘時(shí)間間隔)
3分鐘前 (t距當(dāng)前時(shí)間大于等于1分鐘芝囤,小于1小時(shí))
8小時(shí)前 (t 距離當(dāng)前時(shí)間大于等于1小時(shí),小于24小時(shí))
3天前 (t 距離當(dāng)前時(shí)間大于等于24小時(shí)辛萍,小于30天)
2個(gè)月前 (t 距離當(dāng)前時(shí)間大于等于30天小于12個(gè)月)
8年前 (t 距離當(dāng)前時(shí)間大于等于12個(gè)月)
function friendlyDate(time){
var targetDate = time;
var curDate = new Date().getTime();
var offset = Math.abs(targetDate-curDate);
if(offset < 60*1000){
return '剛剛'
}else if(offset < 60*1000*60){
return '3分鐘前'
}else if(offset < 60*1000*60*24){
return '8小時(shí)前'
}else if(offset < 60*1000*60*24*30){
return '3天前'
}else if(offset < 60*1000*60*24*30*12){
return '2個(gè)月前'
}else if(offset >= 60*1000*60*24*30*12){
return '8年前'
}
}
var str1 = friendlyDate( '1494432000000' ) // 2017-5-11
console.log(str1)
var str2 = friendlyDate('1504886400000') //2017-9-09
console.log(str2)