常用的方法

  1. 多維數(shù)組轉(zhuǎn)一維數(shù)組
   var arr = [1,2, [1,2,3],4,5,[5,6,[1,2]],7,8]
   // 轉(zhuǎn)字符串后轉(zhuǎn)回?cái)?shù)組漓帚,此時(shí)數(shù)組值為字符串吞琐,然后用map轉(zhuǎn)number
   let arr1 = arr.join(',').split(',')
   let res = arr1.map(item =>  Number (item))
   
  // 方法二遞歸
    var arr = [1,2, [10,20,30],4,5,[15,16,[21,31]],7,8]
    var res = []
    function fun (data){
        for(let item of data) {
            if(item instanceof Array){
                fun(item)
            } else {
                 res.push(item)
            }
        }
        return res
    }
    console.log(fun(arr))
   

2.排序

// 1.冒泡排序
  let arr = [1,3,6,2,10]
  
  function fun (arr){
     for (var i=0;i<arr.length-1;i++){
        //控制每比較的次數(shù)
        for (var j=0;j<arr.length-1-i;j++){
            if (arr[j]<arr[j+1]){
                // 或es6的數(shù)組解構(gòu)語法
                [arr[j], arr[j+1]] = [arr[j+1], arr[j]]
            }
        }
    }
    return arr
  }

 //   2.快速排序
    // //快排
  var arr = [2,5,1,4,9,10]
    
  function fun (arr) {
    var arr1 = []
    var cindex = Math.floor(arr.length / 2)
    var c = arr.splice(cindex, 1);
    for (var i = 0; arr.length > i; i++){
        if (arr[i] > c){
            arr1.push(arr[i])
        } else {
            arr1.unshift(arr[i])
        }
    }
    arr1.splice(cindex-1, 0, ...c)
    return arr1
  }

3.字符串中重復(fù)最多的字符

    var str = 'aaabbbbccd' 或 var str = [1,1,1,1,2,2,3,4]
    
    var obj = {} //轉(zhuǎn)成對(duì)象格式
    for(let i = 0; str.length > i; i++){
     if(!obj[str[i]]){ //對(duì)象key值不存在時(shí),新加入value默認(rèn)1
        obj[str[i]] = 1
     }else {
        obj[str[i]]++ // 存在自加
     }
    }
   console.log(obj) // {a:3;b:4;c:2;d:1}

    var max = 0 // 最多次數(shù)即對(duì)象value最大值
    var n = '' // 最大值的key
    for(var j in obj) {
        if(obj[j] > max){
           max = obj[j]
           n = j
        }
    }

4.json對(duì)象去重函數(shù)

function uniqueArray(arr,key){
    // new_arr數(shù)組是存放key值的對(duì)象,用于排除重復(fù)的對(duì)象
    var new_arr=[];
    // result用于存放new_arr排除后沒有重復(fù)對(duì)象的值
    var result=[];
    for(var i=0; i<arr.length; i++){
        //  new_arr中不包含key值才能進(jìn)入
        if(!new_arr.includes(arr[i][key])){     
            //如果沒有找到就把這個(gè)key放到arr里面桶蝎,以便下次循環(huán)時(shí)用
            new_arr.push(arr[i][key]);           
            //result中不存在的項(xiàng)push進(jìn)去
            result.push(arr[i]);                 
        }
    }
    return result;
}

5.淺拷貝與深拷貝

1)深復(fù)制在計(jì)算機(jī)中開辟了一塊內(nèi)存地址用于存放復(fù)制的對(duì)象杠娱,
2)而淺復(fù)制僅僅是指向被復(fù)制的內(nèi)存地址,如果原地址中對(duì)象被改變了与学,那么淺復(fù)制出來的對(duì)象也會(huì)相應(yīng)改變彤悔。

//1.淺拷貝
    ES6:Object.assign() 
    數(shù)組: 
        let arr = [1, 2, 3]
        let copy_arr = []
        
        1.copy_arr = Array.from(arr)
        2.copy_arr = [...arr]
        3.for(var i=0; i<arr.length; i++){
          copy_arr[i]=arr[i];
        }
    對(duì)象:
        let obj = {name: 'zhangsan',sex: '男'}
        let copy_obj = {}
        for(var i in obj){
            copy_obj[i] = obj[i]
        }
        
//2.深拷貝--遞歸復(fù)制

function deepCopy(obj){
    let result = Array.isArray(obj)?[]:{};  
    if(obj && typeof obj === 'object'){ 
        for(let key in obj){
            if(obj.hasOwnProperty(key)){
                // 如果key還是對(duì)象或數(shù)組繼續(xù)調(diào)用該方法
                if(obj[key]&&typeof obj[key]==='object'){
                    result[key]=deepCopy(obj[key]);
                }else{
                    result[key]=obj[key];
                }
            }
        }
    }
    return result;
}

6.倒計(jì)時(shí)

// 倒計(jì)時(shí)10秒
//1.延時(shí)器實(shí)現(xiàn)
var time = 10
var timer = setInterval(() => {
if(time>1){
    time -- 
} else {
    time = 0
    clearInterval(timer)
}
console.log(time)
},1000)

//2.定時(shí)器實(shí)現(xiàn)
    var time = 10
    function fun(){
        var timer = setTimeout(fun,1000) 
        if(time>1){
            time -- 
        } else {
            time = 0
            clearTimeout(timer)
        }
        
        console.log(time)
    }
    fun()

Json 對(duì)象,判斷兩個(gè)value值相等

function uniqueArray(arr,key,val){
    // new_arr數(shù)組是存放key值的對(duì)象索守,用于排除重復(fù)的對(duì)象
    var new_arr=[];
    // result用于存放new_arr排除后沒有重復(fù)對(duì)象的值
    var result=[];
    for(var i=0; i<arr.length; i++){
        arr[i][key] = arr[i][key] - 0
        arr[i][val] = arr[i][val] - 0
        //  new_arr中不包含key,val值才能進(jìn)入
        if(new_arr.includes(arr[i][key]) && new_arr.includes(arr[i][val])){
            arr[i][val] += (Math.random() * 0.0001)
            result.push(arr[i]);
        } else {
            new_arr.push(arr[i][key]);
            new_arr.push(arr[i][val]);
            result.push(arr[i]);
        }
    }
    return result;
}

6.多層嵌套json對(duì)象添加屬性

// 方法一 遞歸函數(shù)
// data: json對(duì)象數(shù)據(jù)
// beforeActive:添加的屬性
dataFormat(data) {
  if (!data.hasOwnProperty('beforeActive')) {
    // data['tag'] = 'beforeActive';
    data.beforeActive = true
  }
  // 要返回其枚舉自身屬性的對(duì)象
  const propArr = Object.keys(data);
  propArr.forEach(item => {
    if (typeof data[item] === 'object') {
      this.dataFormat(data[item]);
    }
  });
  return data;
};
// 方法二
// obj為json對(duì)象晕窑,addkey:添加的屬性。addvalue: 添加的屬性值
mapObj(obj, addkey, addvalue){
  for(let key in obj){
    if (key === 'children'
        && obj.hasOwnProperty("children")
        && obj[key] instanceof Object
        && !obj instanceOf Array) {
      obj[key][addkey] = addvalue
      mapObj(obj[key],addkey,addvalue)
    }
  }
}

// 解析url
    function analysisUrl(url){

        let hash = url.slice(url.indexOf('?')+1).split('&')

        let params = {}

        for(let i in hash){

            hash[i] = hash[i].split("=")

            params[hash[i][0]]=hash[i][1]

        }
        return params

    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卵佛,一起剝皮案震驚了整個(gè)濱河市杨赤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌截汪,老刑警劉巖疾牲,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異衙解,居然都是意外死亡阳柔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門蚓峦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舌剂,“玉大人济锄,你說我怎么就攤上這事』糇” “怎么了荐绝?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谴忧。 經(jīng)常有香客問我很泊,道長(zhǎng),這世上最難降的妖魔是什么沾谓? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任委造,我火速辦了婚禮,結(jié)果婚禮上均驶,老公的妹妹穿的比我還像新娘昏兆。我一直安慰自己,他們只是感情好妇穴,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布爬虱。 她就那樣靜靜地躺著,像睡著了一般腾它。 火紅的嫁衣襯著肌膚如雪跑筝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天瞒滴,我揣著相機(jī)與錄音曲梗,去河邊找鬼。 笑死妓忍,一個(gè)胖子當(dāng)著我的面吹牛虏两,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播世剖,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼定罢,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了旁瘫?” 一聲冷哼從身側(cè)響起祖凫,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酬凳,沒想到半個(gè)月后蝙场,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粱年,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年售滤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡完箩,死狀恐怖赐俗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弊知,我是刑警寧澤阻逮,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站秩彤,受9級(jí)特大地震影響叔扼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜漫雷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一瓜富、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧降盹,春花似錦与柑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涡戳,卻和暖如春结蟋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渔彰。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工嵌屎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胳岂。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓编整,卻偏偏與公主長(zhǎng)得像舔稀,于是被迫代替她去往敵國和親乳丰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 一: 對(duì)象操作 刪除對(duì)象的屬性 delete obj.a; //關(guān)鍵字delete可以刪除對(duì)象的屬性 合并兩個(gè)對(duì)象...
    Robot_Lee閱讀 119評(píng)論 0 0
  • 常用的對(duì)象的方法 1. Object.create() 創(chuàng)建對(duì)象 使用說明//指定原型對(duì)象和其屬性創(chuàng)建一個(gè)新的對(duì)...
    sunny519111閱讀 212評(píng)論 0 1
  • 數(shù)組中常用的方法 分為四個(gè)維度記憶方法的作用方法的參數(shù)方法的返回值原有數(shù)組是否改變 push 作用:向數(shù)組”末尾“...
    小K哥_02閱讀 264評(píng)論 0 1
  • https://www.cnblogs.com/JHblogs/p/6418802.htmlVersion:1.0...
    鯊魚兒_e0a3閱讀 1,189評(píng)論 0 0
  • When you get more and more beautiful , naturally sameone ...
    前端又又閱讀 343評(píng)論 0 0