寫一個函數(shù),返回從min到max之間的 隨機整數(shù),包括min不包括max
function minmax(min,max){
return min + Math.floor(Math.random()*(max-min))
}
minmax(2,6)//2 3 4 5
寫一個函數(shù),返回從min都max之間的 隨機整數(shù),包括min包括max
function minmax(min,max){
return min + Math.floor(Math.random()*(max-min+1))
}
minmax(2,6)//2 3 4 5 6
寫一個函數(shù),生成一個長度為 n 的隨機字符串,字符串字符的取值范圍包括0到9,a到 z,A到Z。
可以配置想要隨機的字符
function getRandStr(len,char){
// 意識到charAt就很輕松了,用possible[]也可以
var possible = char || "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var str = '';
for(var j=0;j<len;j++){
//每次循環(huán)隨機一個字符
str += possible.charAt(Math.floor(Math.random() * possible.length))
}
return str
}
function getRandStr(len){
var str =''
var randomchar=function(){
var n= Math.floor(Math.random()*62);
if(n<10) return n; //1-10 其實數(shù)字也可以向下面這樣寫:48-57
if(n<36) return String.fromCharCode(n+55); //A-Z 65-90
return String.fromCharCode(n+61); //a-z 97-122 97-122
}
while(str.length< len){
str += randomchar();
}
return str
}
var str = getRandStr(10); // 0a3iJiRZap
console.log(str)
function getRandStr(len,char){
char = char || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var str = '';
for (var i = 0; i < len; i++) {
// 每次循環(huán)隨機截取一個字符
var randomPoz = Math.floor(Math.random() * char.length);
str += char.substring(randomPoz,randomPoz+1);
}
return str;
}
var str = getRandStr(10); // 0a3iJiRZap
console.log(str)
//檢驗隨機數(shù)出現(xiàn)的次數(shù)是否均等
function random(min,max) {
var dist = {};
for (var i=0; i<10000; i++) {
//將出現(xiàn)的數(shù)字保存為對象的key值并記錄他們出現(xiàn)的次數(shù)
var key = Math.floor(Math.random() * (max - min) ) + min;
if (dist[key]) {
dist[key]++
}else {
dist[key] = 1;
}
}
console.log(dist);
}
random(2,8);
寫一個函數(shù),生成一個隨機 IP 地址,一個合法的 IP 地址為 0.0.0.0~255.255.255.255
function getRandIP() {
var result = ''
for(var i=0;i<4;i++){
result += (Math.floor(Math.random() * 256) + '.');
}
var arr = result.split('');
arr.pop();
result = arr.join('');
return result;
}
var ip = getRandIP()
console.log(ip) // 10.234.121.45
function getRandIP(){
let arr = [];
for (let i = 0; i < 4; i++) {
arr.push(Math.floor(Math.random() * 266));
}
return arr.join('.');
}
var ip = getRandIP()
console.log(ip) // 10.234.121.45
寫一個函數(shù),生成一個隨機顏色字符串,合法的顏色為#000000~ #ffffff
function getRandColor(){
var possible = '0123456789abcdef';
var result = ''
for(var i=0;i<3;i++){
result += getRandStr(2,possible);
}
var arr = result.split('');
arr.unshift('#');
return arr.join('');
}
var color = getRandColor()
console.log(color) // #3e2f1b
function getRandStr(len,char){
var possible = char || "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var str = '';
for(var j=0;j<len;j++){
//每次循環(huán)隨機一個字母
str += possible.charAt(Math.floor(Math.random() * possible.length))
}
return str
}
function getRandColor(){
var temp;
var arr = ['#'];
var str='0123456789abcdef', len = str.length;
for (var i = 0; i < 6; i++) {
var temp = Math.floor(Math.random() * (len));
arr.push(str[temp]);
}
return arr.join('');
}
var color = getRandColor()
console.log(color) // #f5a121
數(shù)組方法里push、pop、shift、unshift、join、splice分別是什么作用?用 splice函數(shù)分別實現(xiàn)push、pop、shift、unshift方法
1. push()方法將一個或多個元素添加到數(shù)組的末尾,并返回數(shù)組的新長度。
作用:
1.添加元素到數(shù)組
var sports = ["soccer", "baseball"];
var total = sports.push("football", "swimming");
console.log(sports);
// ["soccer", "baseball", "football", "swimming"]
console.log(total);
// 4
- 合并兩個數(shù)組(apply,call)
var vegetables = ['parsnip', 'potato'];
var moreVegs = ['celery', 'beetroot'];
// 將第二個數(shù)組融合進第一個數(shù)組
// 相當于 vegetables.push('celery', 'beetroot');
Array.prototype.push.apply(vegetables, moreVegs);
console.log(vegetables);
// ['parsnip', 'potato', 'celery', 'beetroot']
3.像數(shù)組一樣使用對象
push 是特意設計為通用的,我們可以使用它來獲得便利。正如下面的例子所示,Array.prototype.push 可以在一個對象上工作。push也可以作用在字符串上,非常方便。
var obj = {
length: 0,
addElem: function addElem (elem) {
[].push.call(this, elem);
}
};
obj.addElem({});
obj.addElem({});
console.log(obj.length);
// → 2
//盡管 obj 不是數(shù)組,但是 push 方法成功地使 obj 的 length 屬性增長了,就像我們處理一個實際的數(shù)組一樣。
2. pop()方法從數(shù)組中刪除最后一個元素,并返回該元素的值。此方法更改數(shù)組的長度。
3. shift()方法從數(shù)組中刪除第一個元素,并返回該元素的值。此方法更改數(shù)組的長度
4. unshift() 方法將一個或多個元素添加到數(shù)組的開頭,并返回新數(shù)組的長度
5. join()方法將數(shù)組的所有元素連接到一個字符串中。join() 方法,不會改變數(shù)組!
用處:可使用四種不同的分隔符連接數(shù)組元素
6. splice(deleteIndex,deleteNum,addItem)方法通過刪除現(xiàn)有元素和/或添加新元素來更改一個數(shù)組的內(nèi)容。
以上六種方法只有join不會改變原數(shù)組?。?!
splice函數(shù)分別實現(xiàn)push、pop、shift、unshift
function push(arr,ele){
arr.splice(arr.length,0,ele);
return arr.length;
}
function pop(arr){
return arr.splice(arr.length-1,1);
}
function shift(arr){
return arr.splice(0,1);
}
function unshift(arr,ele){
arr.splice(0,0,ele)
return arr.length
}
es6優(yōu)雅多了..
class MyArray extends Array {
sPush(...items) {
this.splice(this.length, 0, ...items);
}
sPop() {
this.splice(this.length - 1, 1);
}
sShift() {
this.splice(0, 1);
}
sUnshift(...items) {
this.splice(0, 0, ...items);
}
}
let arr = new MyArray(1, 2, 3);
arr.sUnshift(4);//[4, 1, 2, 3]
寫一個函數(shù),操作數(shù)組,數(shù)組中的每一項變?yōu)樵瓉淼钠椒?,在原?shù)組上操作
function squareArr(arr){
for(var i=0;i<arr.length;i++){
arr[i] = arr[i] * arr[i];
}
return arr;
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(arr) // [4, 16, 36]
function squareArr(arr){
arr.map(function(item,index){
arr[index] = item * item;
})
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(arr) // [4, 16, 36]
寫一個函數(shù),操作數(shù)組,返回一個新數(shù)組,新數(shù)組中只包含正數(shù),原數(shù)組不變
function filterPositive(arr){
// 記重點:filter不會改變原數(shù)組
var result = arr.filter(function(item){
return parseInt(item) > 0
})
return result;
}
// 原數(shù)組沒變
var arr = [3, -1, 2, '饑人谷', true]
var newArr = filterPositive(arr)
console.log(newArr) //[3, 2]
console.log(arr) //[3, -1, 2, '饑人谷', true]
function filterPositive(arr) {
return arr.filter((e) => {
return typeof e === 'number' && e > 0;
});
}
var arr = [3, -1, 2, '饑人谷', true]
var newArr = filterPositive(arr)
console.log(newArr) //[3, 2]
console.log(arr) //[3, -1, 2, '饑人谷', true]
寫一個函數(shù)getChIntv,獲取從當前時間到指定日期的間隔時間
var str = getChIntv("2017-02-08");
console.log(str); // 168天7小時23分鐘35秒
function getChIntv(date){
var targetDate = new Date(date)
var curDate = new Date;
var offset = Math.abs(curDate - targetDate)
var totalSeconds = Math.floor(offset/1000)//總秒數(shù)
var seconds = totalSeconds % 60
var totalMinutes = Math.floor(offset/1000/60)//總分鐘
var minutes = totalMinutes % 60
var totalHours = Math.floor(offset/1000/60/60)//總小時
var hours = totalHours % 24
var totalDays = Math.floor(offset/1000/60/60/24)//總天數(shù)
return totalDays + '天' + hours + '小時' + minutes + '分鐘' + seconds + '秒'
}
把hh-mm-dd格式數(shù)字日期改成中文日期
var str = getChsDate('2015-01-08');
console.log(str); // 二零一五年一月八日
function getChsDate(date){
var result = []
var str = ['零','一','二','三','四','五','六','七','八','九',
'十','十一','十二','十三','十四','十五','十六','十七','十八','十九',
'二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九',
'三十','三十一'];
var arr = date.split('-');
var year = arr[0];
// 除去0并轉(zhuǎn)化為字符串
var month = parseInt(arr[1]) + '';
var day = parseInt(arr[2]) + '';
for(var i=0;i<year.length;i++){
result.push(str[year[i]])
}
result.push('年')
for(var j=0;j<month.length;j++){
result.push(str[month[j]])
}
result.push('月')
for(var k=0;k<day.length;k++){
result.push(str[day[k]])
}
result.push('日')
return result.join('')
}
寫一個函數(shù),參數(shù)為時間對象毫秒數(shù)的字符串格式,返回值為字符串。假設參數(shù)為時間對象毫秒數(shù)t,根據(jù)t的時間分別返回如下字符串:
- 剛剛( t 距當前時間不到1分鐘時間間隔)
- 3分鐘前 (t距當前時間大于等于1分鐘,小于1小時)
- 8小時前 (t 距離當前時間大于等于1小時,小于24小時)
- 3天前 (t 距離當前時間大于等于24小時,小于30天)
- 2個月前 (t 距離當前時間大于等于30天小于12個月)
- 8年前 (t 距離當前時間大于等于12個月)
function friendlyDate(t){
var diffTime = +new Date -t;
var second = 1000,
minute = second * 60,
hour = minute * 60,
day = hour * 24,
month = day * 30,
year = month * 12;
var time;
if (diffTime >= year) {
time = parseInt(diffTime / year);
return time + "年前";
} else if (diffTime >= month) {
time = parseInt(diffTime / month);
return time + "個月前";
} else if (diffTime >= day) {
time = parseInt(diffTime / day);
return time + "天前";
} else if (diffTime >= hour) {
time = parseInt(diffTime / hour);
return time + "小時前";
} else if (diffTime >= minute) {
time = parseInt(diffTime / minute);
return time + "分鐘前";
} else if (diffTime >= second) {
return "剛剛";
}
}
var str1 = friendlyDate('1501053330236');
var str2 = friendlyDate('1500059930236');
var str3 = friendlyDate('1501060042273');
console.log(str1, str2,str3);//1小時前 11天前 剛剛
參考鏈接:mdn