(一)Lodash數(shù)組篇

概念簡述

  • lodash 是一個類庫
  • Lodash 通過降低 array鸵荠、number卷中、objects丹泉、string 等等的使用難度從而讓 JavaScript 變得更簡單

數(shù)組篇

  • _.chunk(array,[size=1]) 切割數(shù)組

作用: 講數(shù)組array拆分成多個size長度的區(qū)塊殿如,并將這些區(qū)塊組成一個新的數(shù)組柴墩,如果array無法分割成等長的區(qū)塊君仆,那么最后的剩余元素將組成一個區(qū)塊翩概。

  • 參數(shù)
    array :需要處理的數(shù)組
    size=1(number):每個數(shù)組區(qū)塊的長度
  • 返回
    (Array):返回一個包含拆分區(qū)塊的新數(shù)組(相當(dāng)于二維數(shù)組)
  • demo
 let _ = require("lodash");
    let arr = [1, 2, 3, 4, 5, 6];
    let arr_result = _.chunk(arr, 2);
    console.log(arr_result);
//結(jié)果[[1,2],[3,4],[5,6]]
//如果第二個參數(shù)要是4則變成 [[1,2,3,4],[5,6]]

  • _.compact(array) 刨去假值

作用: 創(chuàng)建一個新數(shù)組,包含原數(shù)組中所有的非假值元素返咱。例如false,null,0,"",undefined,NaN都被認(rèn)為假值

  • 參數(shù)
    array(要處理的數(shù)組)
  • 返回值
    array:返回過濾掉假值的新數(shù)組
  • demo
   let _ = require("lodash");
    let arr = [0, 1, NaN, 2, null, 3, undefined];
    let arr_result = _.compact(arr);
    console.log(arr_result);
//結(jié)果 [1,2,3]

  • _.concat(array,[values]) 兩個數(shù)組鏈接起來

創(chuàng)建一個新的數(shù)組將array與任何數(shù)組或值鏈接在一起

  • 參數(shù)
    array:被鏈接的數(shù)組
    [values] (...*)連接的值
  • 返回值
    (Array):返回連接后的新數(shù)組
  • demo
    let _ = require("lodash");
    let arr = [1];
    let arr2 = _.concat(arr, 2, [3], [[4]], { name: "張三" });
    console.log(arr2);
    console.log(arr);

  • _.difference(array,[values]) 找到不同的

創(chuàng)建一個具有唯一array值得數(shù)組, 每個值不包含在其他給定的數(shù)組中

  • 參數(shù)
    array:要檢查的數(shù)組
    [values] :要排除的值
  • 返回值
    (Array):返回一個過濾值后的新數(shù)組,他是以第一個數(shù)組為基準(zhǔn)
  • demo
let _ = require("lodash");
    let result = _.difference([3, 2, 100], [100, 2]);
    console.log(result);
//結(jié)果就是[3]

  • _.differenceBy(array,[values],condition) 找到不同的帶條件

創(chuàng)建一個具有唯一array值得數(shù)組,

  • 參數(shù)
    array:要檢查的數(shù)組
    [values] :要排除的值
    條件 :他是先把2個數(shù)組里面的所有值都執(zhí)行一遍條件钥庇,然后篩選出來
  • 返回值
    (Array):返回一個過濾值后的新數(shù)組
  • demo
    let _ = require("lodash");
    let result = _.differenceBy(
      [{ name: "哈哈" }, { sex: "男" }],
      [{ name: "哈哈" }],
      "name"
    );
    console.log(result);
//結(jié)果[{sex:"男"}]
    let _ = require("lodash");
    let result = _.differenceBy([3.1, 4.2, 5.3], [4.6, 5.1], Math.floor);
    console.log(result);
//結(jié)果3.1
   let _ = require("lodash");
    let result = _.differenceBy([12, 3, 4], [3, 1], function(item) {
      return item - 4 > 0;
    });
    console.log(result);

  • _.drop(array,[n=1]) 從左邊去掉

創(chuàng)建一個切片數(shù)組,去除array前面的n個元素,從左邊開始切割

  • 參數(shù)
    array:要查詢的數(shù)組
    [values] :要去除的元素個數(shù)
  • 返回值
    (Array):返回array剩余的切片
  • demo
    let _ = require("lodash");
    let arr = [1, 2, 3, 4, 5, 6];
    let arr_result = _.drop(arr, 3);
    console.log(arr_result);
//結(jié)果就是[4,5,6]
//如果要去除的元素個數(shù)比總長都大咖摹,那么返回一個空數(shù)組评姨,要是0就不切割了

  • _.dropRight(array,[n=1]) 從右邊去掉

創(chuàng)建一個切片數(shù)組,去除array前面的n個元素,從右邊開始切割

  • 參數(shù)
    array:要查詢的數(shù)組
    [values] :要去除的元素個數(shù)
  • 返回值
    (Array):返回array剩余的切片
  • demo
    let _ = require("lodash");
    let arr = [1, 2, 3, 4, 5, 6];
    let arr_result = _.dropRight(arr, 3);
    console.log(arr_result);
//結(jié)果就是[1,2,3]
//如果要去除的元素個數(shù)比總長都大萤晴,那么返回一個空數(shù)組

  • _.dropwhile(array,方法或者條件) 去掉帶條件

創(chuàng)建一個切片數(shù)組吐句,去除滿足方法或者條件的

  • 參數(shù)
    array:要查詢的數(shù)組
    [condition] : 滿足方法或者條件的
  • 返回值
    (Array):返回array剩余的切片
  • demo
    let _ = require("lodash");
    let arr = [1, 2, 3, 4, 5, 6];
    let arr_result = _.dropWhile(arr, function(item) {
      return item < 4;
    });
    console.log(arr_result);
//結(jié)果就是[4,5,6]
//如果都不滿足,那么返回一個空數(shù)組

  • _.fill(array,value,[start=0],[end=array.length]) 替換

使用value值來替換(array里面的值),從start位置開始到end位置結(jié)束

    let _ = require("lodash");
    let array = [2, 3, 4];
    let result = _.fill(array, "a", 1, 2);
    console.log(result);
   //結(jié)果就是[2,"a",4]
//要是從0開始那么改變的就是第一位

  • _.findIndex(array,condition,[fromIndex=0]) 找到序號

返回第一個通過條件為真值得元素的索引(index)值,而不是元素本身

  • 參數(shù)
    array:要搜索的數(shù)組
    condition: 條件
    [fromIndex=0]: 從第幾個開始找
  • 返回值
    (number):返回找到元素的索引值(index) ,否則返回就是-1
  • demo
    let _ = require("lodash");
    let user = [
      { user: "哈哈哈", active: true },
      { user: "呵呵呵", active: true },
      { user: "嘿嘿嘿", active: false },
      { user: "哦哦哦", active: false }
    ];
    let result = _.findIndex(user, function(item) {
      return !item.active;
    });
    console.log(result);
//返回的結(jié)果就是2因?yàn)閺?開始

  • _.head(array) 找到第一個元素 等價于 _.first(array)

獲取數(shù)組array的第一個元素

 let _ = require("lodash");
    let user = [
      { user: "哈哈哈", active: true },
      { user: "呵呵呵", active: true },
      { user: "嘿嘿嘿", active: false },
      { user: "哦哦哦", active: false }
    ];
    let result = _.first(user);
    console.log(result);
 //結(jié)果就是{user:"哈哈哈",active:true}

  • _.flattenDeep(array) 回歸一維數(shù)組

將array遞歸為一維數(shù)組

    let _ = require("lodash");
    let user = [1, [2, 3, 4, [6, 8, [9, 10]]]];
    let result = _.flattenDeep(user);
    console.log(result);
//結(jié)果就是[1,2,3,4,6,8,9,10];

  • _.flattenDepth(array,[depth=1]) 去除數(shù)組指定的層數(shù)

依據(jù)depth遞歸減少array的嵌套層數(shù)

  • 參數(shù)
    array:要減少嵌套層級的數(shù)組
    depth:最多減少的嵌套層級數(shù)
  • 返回值
    (*):返回減少嵌套層級后的新數(shù)組
  • demo
    let _ = require("lodash");
    let user = [1, [2, 3, 4, [6, 8, [9, 10]]]];
    let result = _.flattenDepth(user, 2);
    console.log(result);
    //結(jié)果[1,2,3,4,6,7,[9,10]]

  • _.intersection([arrays]) 求交集

創(chuàng)建唯一值得數(shù)組硫眯,這個數(shù)組包含所有數(shù)組的共同元素

  • 參數(shù)
    array:待檢查的數(shù)組
  • 返回值
    (*):返回一個包含所有傳入數(shù)組交集元素的新數(shù)組
  • demo
   let _ = require("lodash");
    let result = _.intersection([1, 2], [2, 3], [4, 2]);
    console.log(result);
    //結(jié)果[2]

  • _.intersectionBy([arrays],condition) 求交集

創(chuàng)建唯一值得數(shù)組蕴侧,這個數(shù)組包含所有數(shù)組的共同元素

  • 參數(shù)
    array:待檢查的數(shù)組
    condition:條件
  • 返回值
    (*):返回一個包含所有傳入數(shù)組交集元素的新數(shù)組
  • demo
   let _ = require("lodash");
    let result = _.intersectionBy(
      [1.3, 2.2],
      [2.6, 3.9],
      [4.1, 2.1],
      Math.floor
    );
    console.log(result);
  //結(jié)果[2.2]
  let _ = require("lodash");
    let result = _.intersectionBy([{ x: 1 }], [{ x: 1 }, { name: 3 }], "x");
    console.log(result);
  //結(jié)果[{x:1}]

  • _.join([arrays],分隔符) 把數(shù)組變成字符串

將array中的所有元素轉(zhuǎn)換為由分隔符分割的字符串

 let _ = require("lodash");
    let result = _.join([1, 2, 3, 4], "~");
    console.log(result);
//結(jié)果1~2~3~4

  • _.last(array) 找到最后一個元素

獲取array中最后一個元素

 let _ = require("lodash");
 let result = _.last([1, 2, 3, 4]);
 console.log(result);
//結(jié)果就是4

  • _.nth(array,[n=0])

獲取array中第N個元素,如果N為負(fù)數(shù)两入,則返回從數(shù)組結(jié)尾開始的第N個元素

    let _ = require("lodash");
    let array = [1, 3, 3, 4, 5, 6];
    let result = _.nth(array, 0);
    console.log(result);
   //結(jié)果就是1

  • _.pull(array,[values]) 刪除

移除數(shù)組array中所有和給定值相等的元素净宵,這個方法會改變原數(shù)組。

    let _ = require("lodash");
    let array = [1, 3, 3, 4, 5, 3, 2, 6, 2];
    _.pull(array, 3, 2);
    console.log(array);
//結(jié)果就是[1,4,5,6]

  • _.pullAll(array,values)

移除數(shù)組array中所有和給定值相等的元素裹纳,這個方法會改變原數(shù)組择葡。這個元素必須是數(shù)組

 let _ = require("lodash");
    let array = [1, 3, 3, 4, 5, 3, 2, 6, 2];
    _.pullAll(array, [2, 3]);
    console.log(array);
//結(jié)果[1,4,5,6]

凡是后面有By都會有迭代器

  • _.pullAllBy(array,values,迭代器)

移除數(shù)組array中所有和給定值相等的元素,這個方法會改變原數(shù)組剃氧。迭代器會優(yōu)先過濾下數(shù)組

  • 參數(shù)
    array:待檢查的數(shù)組
    [values] 要刪除的值,必須是數(shù)組
    迭代器:每一個數(shù)組里面的值都需要執(zhí)行
  • 返回值
    (*):返回array
  • demo
    let _ = require("lodash");
    let array = [1.3, 3.2, 3.4, 4.4, 5.3, 3.2, 2.1, 6.7, 2.8];
    _.pullAllBy(array, [2, 3], Math.floor);
    console.log(array);
   //結(jié)果就是 [1.3, 4.4, 5.3, 6.7]

  • _.pullAt(array,[indexes])

根據(jù)索引indexes,移除array中對應(yīng)的元素敏储,并返回被移除元素的數(shù)組,這個方法會改變原數(shù)組

    let _ = require("lodash");
    let array = [1.3, 3.2, 3.4, 4.4, 5.3, 3.2, 2.1, 6.7, 2.8];
    _.pullAt(array, 1);
    console.log(array);
 //結(jié)果就是[1.3,3.4, 4.4, 5.3, 3.2, 2.1, 6.7, 2.8];

  • _.remove(array,迭代器)

移除迭代器中返回是真的元素

  • 參數(shù)
    array:要修改的數(shù)組
    迭代器:每次迭代調(diào)用的函數(shù)
  • 返回值
    (*):返回array
  • demo
  let _ = require("lodash");
    let result = _.remove([1, 2, 3, 4, 5, 6], function(item) {
      return item % 2 == 0 ? true : false;
    });
    console.log(result); 

  • _.reverse(array)

反轉(zhuǎn)array使得第一個元素變成最后一個元素,這個方法會改變原數(shù)組

  let _ = require("lodash");
    let array = [1, 2, 3, 4, 2, 5, 6];
    _.reverse(array);
    console.log(array);
 //結(jié)果[6,5,2,4,3,2,1]

  • _.slice(array,[start=0],[end=array.length])

裁剪數(shù)組array,從start位置開始到end結(jié)束(包前不包后) 不改變原數(shù)組

  let _ = require("lodash");
    let array = [1, 2, 3, 4, 2, 5, 6];
    let result = _.slice(array, 0, 4); 
    console.log(array);
    console.log(result);
 //結(jié)果[1,2,3,4]

  • _.uniq(array) 去重

創(chuàng)建一個去重后的array的數(shù)組副本,只有第一次出現(xiàn)的元素才能被保留,不會改變原數(shù)組

   let _ = require("lodash");
    let array = [1, 2, 3, 4, 2, 5, 6];
    let result = _.uniq(array);
    console.log(array);
    console.log(result);
//結(jié)果[1,2,3,4,5,6]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朋鞍,一起剝皮案震驚了整個濱河市已添,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌滥酥,老刑警劉巖更舞,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坎吻,居然都是意外死亡缆蝉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刊头,“玉大人黍瞧,你說我怎么就攤上這事≡樱” “怎么了印颤?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長污尉。 經(jīng)常有香客問我膀哲,道長往产,這世上最難降的妖魔是什么被碗? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮仿村,結(jié)果婚禮上锐朴,老公的妹妹穿的比我還像新娘。我一直安慰自己蔼囊,他們只是感情好焚志,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著畏鼓,像睡著了一般酱酬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上云矫,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天膳沽,我揣著相機(jī)與錄音,去河邊找鬼让禀。 笑死挑社,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巡揍。 我是一名探鬼主播痛阻,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腮敌!你這毒婦竟也來了阱当?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤糜工,失蹤者是張志新(化名)和其女友劉穎弊添,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啤斗,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡表箭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片免钻。...
    茶點(diǎn)故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡彼水,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出极舔,到底是詐尸還是另有隱情凤覆,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布拆魏,位于F島的核電站盯桦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏渤刃。R本人自食惡果不足惜拥峦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卖子。 院中可真熱鬧略号,春花似錦、人聲如沸洋闽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诫舅。三九已至羽利,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刊懈,已是汗流浹背这弧。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俏讹,地道東北人当宴。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像泽疆,于是被迫代替她去往敵國和親户矢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評論 2 354

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

  • PHP數(shù)組函數(shù)殉疼,摘錄于PHP手冊 1梯浪、array_change_key_case (PHP 4 >= 4.2.0,...
    kotlin360閱讀 706評論 2 1
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫文章瓢娜,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,752評論 2 9
  • 一挂洛、數(shù)組定義 array() 1、索引數(shù)組 在一個變量中眠砾,存儲一個或多個值虏劲。數(shù)組中的每一個元素都有一個訪問ID,根...
    竹與豆閱讀 530評論 0 0
  • 嗨.我文化不高 文采也不好只想把我想說的想寫的都記錄下來 謝謝觀看 我 是個北方女孩 剛剛能合法去網(wǎng)吧的年紀(jì)我進(jìn)入...
    尤伺閱讀 168評論 0 1
  • 題記:生活中我們經(jīng)常會遇到給別人貼標(biāo)簽的情況,比如“鳳凰男”“巨嬰”柒巫,看到“紋身”你會想到什么励堡? 1 “最近小年輕...
    寒子3429閱讀 516評論 5 5