Math_Array_Date相關(guān)

Math

寫一個(gè)函數(shù)悍缠,返回從min到max之間的 隨機(jī)整數(shù),包括min不包括max

function number(min, max) {
    var num = Math.floor(Math.random() * (max - min) + min);
    console.log(num);
}
number(1, 10);

寫一個(gè)函數(shù),返回從min都max之間的 隨機(jī)整數(shù),包括min包括max

function number(min, max) {
    var num = Math.floor(Math.random() * (max - min + 1) + min);
    console.log(num);
}
number(1, 10);

寫一個(gè)函數(shù)弟跑,生成一個(gè)長度為 n 的隨機(jī)字符串,字符串字符的取值范圍包括0到9趴拧,a到 z,A到Z劲藐。

function getRandStr(len) {
    var strs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    var possibleStr = '';
    for (var i = 0; i < len; i++) {
        //charAt()方法從一個(gè)字符串中返回指定的字符,接收一個(gè)參數(shù)index八堡,一個(gè)介于0和字符串長度減1之間的整數(shù)
        possibleStr += strs.charAt(Math.floor(Math.random() * strs.length));
    } 
        return possibleStr;
}
var str = getRandStr(10);
console.log(str); //如:Irtg95rXBQ

寫一個(gè)函數(shù)樟凄,生成一個(gè)隨機(jī) IP 地址聘芜,一個(gè)合法的 IP 地址為 0.0.0.0~255.255.255.255

function getRandIP() {
    var ipArr = [];
    for (var i = 0; i < 4; i++) {
        ipArr[i] = Math.floor(Math.random() * 256);
    }
    return ipArr.join('.');
}
var ip = getRandIP()
console.log(ip) // 10.234.121.45

寫一個(gè)函數(shù),生成一個(gè)隨機(jī)顏色字符串缝龄,合法的顏色為#000000~ #ffffff

//方法一
function getRandColor() {
    var str = '0123456789abcdef';
    var possibleColor = '';
    for (var i = 0; i < 6; i++) {
        possibleColor += str.charAt(Math.floor(Math.random() * str.length));
    } 
        return '#' + possibleColor;
}
var color = getRandColor();
console.log(color);   // #3e2f1b

//方法二
function number(min, max) {
    var num = Math.floor(Math.random() * (max - min) + min);
    return num;
}
function getRandColor() {
    var possibleColor = '';
    for (var i = 0; i < 6; i++) {
        possibleColor += number(0, 16).toString(16);
    }
    return '#' + possibleColor;
}
var color = getRandColor();
console.log(color);   // #3e2f1b

Array

數(shù)組方法里push汰现、pop、shift叔壤、unshift瞎饲、join、splice分別是什么作用炼绘?用 splice函數(shù)分別實(shí)現(xiàn)push嗅战、pop、shift、unshift方法驮捍。

  • push()用于在數(shù)組末尾添加若干項(xiàng)并返回修改后數(shù)組的長度疟呐,pop()用于刪除數(shù)組最后一項(xiàng)并返回該項(xiàng),shift()用于刪除數(shù)組第一項(xiàng)并返回該項(xiàng)东且,unshift()用于在數(shù)組前端添加若干項(xiàng)并返回新數(shù)組長度启具,這幾種方法都會(huì)改變原始數(shù)組。
  • join()根據(jù)傳入的字符串參數(shù)將數(shù)組項(xiàng)拼接成字符串并返回包含所有數(shù)組項(xiàng)的字符串珊泳。
  • splice()用于向數(shù)組中插入項(xiàng)鲁冯,該方法始終都會(huì)返回一個(gè)數(shù)組,該數(shù)組中包含從原始數(shù)組中刪除的項(xiàng)(如果沒有刪除任何項(xiàng)則返回一個(gè)空數(shù)組)色查,此方法會(huì)改變原始數(shù)組薯演。
//用splice實(shí)現(xiàn)push
var colors = ['red', 'green', 'blue'];
var pushArr = colors.splice(colors.length, 0, 'yellow', 'pink');
console.log(pushArr); //[]
console.log(colors); //[ 'red', 'green', 'blue', 'yellow', 'pink' ]

//用splice實(shí)現(xiàn)pop
var popArr = colors.splice(colors.length - 1, 1);
console.log(popArr); //[ 'pink' ]
console.log(colors); //[ 'red', 'green', 'blue', 'yellow' ]

//用splice實(shí)現(xiàn)shift
var shiftArr = colors.splice(0, 1);
console.log(shiftArr); //[ 'red' ]
console.log(colors); //[ 'green', 'blue', 'yellow' ]

//用splice實(shí)現(xiàn)unshift
var unshiftArr = colors.splice(0, 0, 'orange', 'white', 'black');
console.log(unshiftArr); //[]
console.log(colors); //[ 'orange', 'white', 'black', 'green', 'blue', 'yellow' ]

寫一個(gè)函數(shù),操作數(shù)組综慎,數(shù)組中的每一項(xiàng)變?yōu)樵瓉淼钠椒交练拢谠瓟?shù)組上操作

//方法一
function squareArr(arr) {
    for (var i = 0; i < arr.length; i++) {
        arr[i] *= arr[i];
    }
};
var arr = [2, 4, 6];
squareArr(arr);
console.log(arr); // [4, 16, 36]

//方法二
function squareArr(arr) {
    for (var i = 0; i < arr.length; i++) {
        arr[i]=Math.pow(arr[i], 2);
    }
};
var arr = [2, 4, 6];
squareArr(arr);
console.log(arr); // [4, 16, 36]

寫一個(gè)函數(shù),操作數(shù)組示惊,返回一個(gè)新數(shù)組好港,新數(shù)組中只包含正數(shù),原數(shù)組不變

function filterPositive(arr) {
    var result = arr.filter(function (item, index) {
        return parseInt(item) > 0;
    })
    return result;
}
var arr = [3, -1, 2, '饑人谷', true]
var newArr = filterPositive(arr)
console.log(newArr) //[3, 2]
console.log(arr) //[3, -1,  2,  '饑人谷', true]

寫一個(gè)函數(shù)sperate(str,num)米罚,str是要分割的字符串钧汹,num是以多少個(gè)字符為單位分割

如sperate('abcdefg',3)==>[abc,def,g]

function sperate(str, num) {
    var res = []
    for (var i = 0; i < str.length; i++) {
        res.push(str.slice(i, i + num))
        i += num - 1
    }
    return res
}
console.log(sperate('abcdefg', 3))//[ 'abc', 'def', 'g' ]
console.log(sperate('hello world  ', 3))//[ 'hel', 'lo ', 'wor', 'ld ', ' ' ]

單個(gè)數(shù)組去重

var arr = [4, 5, 6, 6, 7, 7, 8, 9]
//ES6 Set方法
console.log(Array.from(new Set(arr)))//[4, 5, 6, 7, 8, 9]
var arr = [4, 5, 6, 6, 7, 7, 8, 9]
var arr2=arr.filter((item,index,arr)=>{
return arr.indexOf(item)===index
console.log(arr2)//[4, 5, 6, 7, 8, 9]

兩個(gè)數(shù)組去重并排序

function distinctBySortArray(arr1, arr2) {
    //copy arr1生成一個(gè)無重復(fù)項(xiàng)的新數(shù)組result
    var result = Array.from(new Set(arr1.concat()))
    //遍歷arr2中的每一項(xiàng)
    for (var i = 0; i < arr2.length; i++) {
        //新數(shù)組result中沒有與arr2[i]重復(fù)的項(xiàng)則將arr2[i]添加到result末尾
        if (result.indexOf(arr2[i]) === -1) {
            result.push(arr2[i])
        }
    }
    return result.sort(compare)
}

function compare(val1, val2) {
    return val1 - val2
}

var arr1 = [1, 2, 39, 9, 8, 3, 6, 9]
var arr2 = [1, 7, 8, 0, 0]

console.log(distinctBySortArray(arr1, arr2))//[ 0, 1, 2, 3, 6, 7, 8, 9, 39 ]
console.log(arr1)//[1, 2, 39, 9, 8, 3, 6, 9]
console.log(arr2)//[1, 7, 8, 0, 0]

有兩個(gè)從小到大已經(jīng)排序完成的數(shù)組,長度分別是n和m录择,單個(gè)數(shù)組的不存在重復(fù)元素拔莱,問如何在m+n次操作下,完成去重隘竭,得到一個(gè)完整的非重?cái)?shù)組塘秦。

function distinctBySortArray(arr1, arr2) {
    var n = arr1.length
    var m = arr2.length
    var result = []
    for (var i = 0, j = 0; i < n && j < m;) {
        var temp1 = arr1[i]
        var temp2 = arr2[j]
        if (temp1 < temp2) {
            i++
            result.push(temp1)
        } else if (temp1 === temp2) {
            j++
        } else if (temp1 > temp2) {
            j++
            result.push(temp2)
        }
    }
    if (i < n) {
        return result.concat(arr1.slice(i, n))
    }
    if (j < m) {
        return result.concat(arr2.slice(j, m))
    }
    return result
}

var arr1 = [1, 2, 3, 6, 9]
var arr2 = [1, 6, 7, 8, 9, 13]

console.log(distinctBySortArray(arr1, arr2))//[ 1, 2, 3, 6, 7, 8, 9, 13 ]
console.log(arr1)//[1, 2, 3, 6, 9]
console.log(arr2)//[1, 6, 7, 8, 9, 13]

Date

寫一個(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 totalSeconds = Math.floor(offset / 1000);
    var seconds = totalSeconds % 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);
    var days = totalDays % 365;
    return '距dot生日還有 ' + days + '天 ' + hours + '時(shí) ' + minutes + '分 ' + seconds + '秒'
}
var str = getChIntv("2017-09-02");
console.log(str);  // 距dot生日還有 11天 11時(shí) 11分 49秒

把hh-mm-dd格式數(shù)字日期改成中文日期

function getChsDate(date) {
    var result = [];
    var strs = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十', '二十一', '二十二', '二十三', '二十四', '二十五', '二十六', '二十七', '二十八', '二十九', '三十', '三十一'];
    var arr = date.split('-');
    var year = arr[0],
        month = arr[1],
        day = arr[2];
    year = year.split('').map(function (value) {
        return strs[+value];
    }).join('');
    month = strs[+month];
    day = strs[+day];
    return year + '年' + month + '月' + day + '日';
}
var str = getChsDate('1993-09-12');
console.log(str);  // 一九九三年九月十二日

寫一個(gè)函數(shù)动看,參數(shù)為時(shí)間對象毫秒數(shù)的字符串格式尊剔,返回值為字符串。假設(shè)參數(shù)為時(shí)間對象毫秒數(shù)t菱皆,根據(jù)t的時(shí)間分別返回如下字符串:

  • 剛剛(距當(dāng)前時(shí)間不到1分鐘時(shí)間間隔)
  • N分鐘前 (距當(dāng)前時(shí)間大于等于1分鐘须误,小于1小時(shí))
  • N小時(shí)前 (距離當(dāng)前時(shí)間大于等于1小時(shí),小于24小時(shí))
  • N天前 (距離當(dāng)前時(shí)間大于等于24小時(shí)仇轻,小于30天)
  • N個(gè)月前 (距離當(dāng)前時(shí)間大于等于30天小于12個(gè)月)
  • N年前 (t 距離當(dāng)前時(shí)間大于等于12個(gè)月)
function friendlyDate(time) {
    var offset = +new Date - time;
    var seconds = 1000,
        minutes = seconds * 60,
        hours = minutes * 60,
        days = hours * 24,
        months = days * 30,
        years = months * 12;
    var t;

    if (offset >= years) {
        t = parseInt(offset / years);
        return t + '年前';
    }
    else if (offset >= months) {
        t = parseInt(offset / months)
        return t + '個(gè)月前';
    }
    else if (offset >= days) {
        t = parseInt(offset / days);
        return t + '天前';
    }
    else if (offset >= hours) {
        t = parseInt(offset / hours);
        return t + '小時(shí)前';
    }
    else if (offset >= minutes) {
        t = parseInt(offset / minutes);
        return t + '分鐘前';
    }
    else if (offset >= seconds) {
        return '剛剛';
    }
}
var str = friendlyDate('1311111119999'); //  6年前(括號里的字符串值為1970年距字符串值表示的時(shí)間的毫秒數(shù))
var str2 = friendlyDate('1503190042273'); //1天前
console.log(str, str2);

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末篷店,一起剝皮案震驚了整個(gè)濱河市祭椰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖方淤,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侣监,死亡現(xiàn)場離奇詭異,居然都是意外死亡臣淤,警方通過查閱死者的電腦和手機(jī)橄霉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邑蒋,“玉大人姓蜂,你說我怎么就攤上這事∫降酰” “怎么了钱慢?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長卿堂。 經(jīng)常有香客問我束莫,道長,這世上最難降的妖魔是什么草描? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任览绿,我火速辦了婚禮,結(jié)果婚禮上穗慕,老公的妹妹穿的比我還像新娘饿敲。我一直安慰自己,他們只是感情好逛绵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布怀各。 她就那樣靜靜地躺著,像睡著了一般术浪。 火紅的嫁衣襯著肌膚如雪瓢对。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天胰苏,我揣著相機(jī)與錄音硕蛹,去河邊找鬼。 笑死碟联,一個(gè)胖子當(dāng)著我的面吹牛妓美,可吹牛的內(nèi)容都是我干的僵腺。 我是一名探鬼主播鲤孵,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辰如!你這毒婦竟也來了普监?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凯正,沒想到半個(gè)月后毙玻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡廊散,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年桑滩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片允睹。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡运准,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缭受,到底是詐尸還是另有隱情胁澳,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布米者,位于F島的核電站韭畸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蔓搞。R本人自食惡果不足惜胰丁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喂分。 院中可真熱鬧隘马,春花似錦、人聲如沸妻顶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讳嘱。三九已至幔嗦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沥潭,已是汗流浹背邀泉。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钝鸽,地道東北人汇恤。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像拔恰,于是被迫代替她去往敵國和親因谎。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,216評論 0 4
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒颜懊。 unpack() 函數(shù)從二進(jìn)制字符串對數(shù)據(jù)進(jìn)行解包财岔。 uni...
    思夢PHP閱讀 1,983評論 1 24
  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒风皿。 unpack() 函數(shù)從二進(jìn)制字符串對數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,360評論 0 20
  • 我又羨慕夷恍,又不羨慕魔眨,一種說不出道不明的感覺。 每每看到那些在路上前行的人酿雪,總是會(huì)投去羨慕的目光冰沙,他們真幸運(yùn),可以一...
    劉彥呈live閱讀 476評論 2 4
  • 如果沒有翻爛手機(jī)通訊錄也約不出一個(gè)能夠陪你吃火鍋的人 如果你沒有為了吃一次火鍋而去買速食火鍋吃過 如果你從來沒有含...
    安_小安閱讀 263評論 0 0