ES6 數(shù)組擴展

1. Array.from()

Array.from方法用于將兩類對象轉(zhuǎn)為真正的數(shù)組:類似數(shù)組的對象(array- like object)和可遍歷(iterable)的對象(包括ES6新增的數(shù)據(jù)結(jié)構(gòu)Set和Map)

let obj = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};
// ES5的寫法
var arr1 = [].slice.call(obj); // ['a', 'b', 'c']

// ES6的寫法
let arr2 = Array.from(obj); // ['a', 'b', 'c']

2.Array.of()

Array.of方法用于將一組值,轉(zhuǎn)換為數(shù)組。

Array.of(3, 11, 8) // [3,11,8]
Array.of(3) // [3]
Array.of(3).length // 1

3. 數(shù)組實例的 copyWithin()

數(shù)組實例的copyWithin方法烤宙,在當前數(shù)組內(nèi)部烹骨,將指定位置的成員復制到其他位置(會覆蓋原有成員)窜管,然后返回當前數(shù)組揩尸。也就是說宛渐,使用這個方法界斜,會修改當前數(shù)組仿耽。

 Array.prototype.copyWithin(target, start = 0, end = this.length)
  • target(必需):從該位置開始替換數(shù)據(jù)。

  • start(可選):從該位置開始讀取數(shù)據(jù)各薇,默認為0项贺。如果為負值,表示倒數(shù)峭判。

  • end(可選):到該位置前停止讀取數(shù)據(jù)开缎,默認等于數(shù)組長度。如果為負值林螃,表示倒數(shù)奕删。

    // 將3號位復制到0號位
    [1, 2, 3, 4, 5].copyWithin(0, 3, 4)
    // [4, 2, 3, 4, 5]
    
    // -2相當于3號位,-1相當于4號位
    [1, 2, 3, 4, 5].copyWithin(0, -2, -1)
    // [4, 2, 3, 4, 5]
    
    // 將3號位復制到0號位
    [].copyWithin.call({length: 5, 3: 1}, 0, 3)
    // {0: 1, 3: 1, length: 5}
    
    // 將2號位到數(shù)組結(jié)束疗认,復制到0號位
    var i32a = new Int32Array([1, 2, 3, 4, 5]);
    i32a.copyWithin(0, 2);
    // Int32Array [3, 4, 5, 4, 5]
    
    // 對于沒有部署 TypedArray 的 copyWithin 方法的平臺
    // 需要采用下面的寫法
    [].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4);
    // Int32Array [4, 2, 3, 4, 5]
    

4. 數(shù)組實例的 find() 和 findIndex()

數(shù)組實例的find方法完残,用于找出第一個符合條件的數(shù)組成員。它的參數(shù)是一個回調(diào)函數(shù)横漏,所有數(shù)組成員依次執(zhí)行該回調(diào)函數(shù)谨设,直到找出第一個返回值為true的成員,然后返回該成員绊茧。如果沒有符合條件的成員铝宵,則返回undefined。

[1, 4, -5, 10].find((n) => n < 0)
// -5
[1, 5, 10, 15].find(function(value, index, arr) {
    return value > 9;
}) // 10

數(shù)組實例的findIndex方法的用法與find方法非常類似,返回第一個符合條件的數(shù)組成員的位置鹏秋,如果所有成員都不符合條件尊蚁,則返回-1

 [1, 5, 10, 15].findIndex(function(value, index, arr) {
   return value > 9;
 }) // 2

5.數(shù)組實例的fill()

fill方法使用給定值,填充一個數(shù)組侣夷。

['a', 'b', 'c'].fill(7)
// [7, 7, 7]

new Array(3).fill(7)
 // [7, 7, 7]

fill方法還可以接受第二個和第三個參數(shù)横朋,用于指定填充的起始位置和結(jié)束位置

['a', 'b', 'c'].fill(7, 1, 2)
// ['a', 7, 'c']

上面代碼表示,fill方法從1號位開始百拓,向原數(shù)組填充7琴锭,到2號位之前結(jié)束

6.數(shù)組實例的 entries(),keys() 和 values()

  • keys()是對鍵名的遍歷

  • values()是對鍵值的遍歷

  • entries()是對鍵值對的遍歷

    for (let index of ['a', 'b'].keys()) {
      console.log(index);
    }
    // 0
    // 1
    
    for (let elem of ['a', 'b'].values()) {
      console.log(elem);
    }
    // 'a'
    // 'b'
    
    for (let [index, elem] of ['a', 'b'].entries()) {
      console.log(index, elem);
    }
    // 0 "a"
    // 1 "b"
    

7. 數(shù)組實例的 includes()

Array.prototype.includes方法返回一個布爾值衙传,表示某個數(shù)組是否包含給定的值决帖,與字符串的includes方法類似

[1, 2, 3].includes(2)     // true
[1, 2, 3].includes(4)     // false
[1, 2, NaN].includes(NaN) // true

Map 和 Set 數(shù)據(jù)結(jié)構(gòu)有一個has方法,需要注意與includes區(qū)分

  • Map 結(jié)構(gòu)的has方法蓖捶,是用來查找鍵名的
    • Map.prototype.has(key)地回、
    • WeakMap.prototype.has(key)、
    • Reflect.has(target, propertyKey)俊鱼。
  • Set 結(jié)構(gòu)的has方法刻像,是用來查找值的
    • Set.prototype.has(value)
    • WeakSet.prototype.has(value)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末并闲,一起剝皮案震驚了整個濱河市细睡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌帝火,老刑警劉巖溜徙,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異购公,居然都是意外死亡萌京,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門宏浩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人靠瞎,你說我怎么就攤上這事比庄。” “怎么了乏盐?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵佳窑,是天一觀的道長。 經(jīng)常有香客問我父能,道長神凑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮溉委,結(jié)果婚禮上鹃唯,老公的妹妹穿的比我還像新娘。我一直安慰自己瓣喊,他們只是感情好坡慌,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藻三,像睡著了一般洪橘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棵帽,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天熄求,我揣著相機與錄音,去河邊找鬼逗概。 笑死弟晚,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的仗谆。 我是一名探鬼主播指巡,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼隶垮!你這毒婦竟也來了藻雪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤狸吞,失蹤者是張志新(化名)和其女友劉穎勉耀,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹋偏,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡便斥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了威始。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枢纠。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖黎棠,靈堂內(nèi)的尸體忽然破棺而出晋渺,到底是詐尸還是另有隱情,我是刑警寧澤脓斩,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布木西,位于F島的核電站,受9級特大地震影響随静,放射性物質(zhì)發(fā)生泄漏八千。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望恋捆。 院中可真熱鬧照皆,春花似錦、人聲如沸鸠信。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽星立。三九已至爽茴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绰垂,已是汗流浹背室奏。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留劲装,地道東北人胧沫。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像占业,于是被迫代替她去往敵國和親绒怨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

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

  • [JavaScript數(shù)組]一篇中介紹了ES6之前的數(shù)組方法谦疾。本篇介紹一下ES6里新增的數(shù)組方法南蹂。 keys,va...
    sponing閱讀 299評論 0 0
  • ES6數(shù)組擴展 1.Array.from() 定義:Array.from()用于將兩類對象轉(zhuǎn)換成真正的數(shù)組:類數(shù)組...
    lijaha閱讀 423評論 0 0
  • 1.Array.of() Array.of() 方法創(chuàng)建一個具有可變數(shù)量參數(shù)的新數(shù)組實例念恍,而不考慮參數(shù)的數(shù)量或類型...
    bjhu電net閱讀 232評論 0 0
  • //Array.of 可以生成一個簡單數(shù)組六剥, { let arr = Array.of(3,4,7,9,1...
    super靜_jingjing閱讀 296評論 0 1
  • 1.Array.from Array.from方法用于將兩類對象轉(zhuǎn)為真正的數(shù)組:類似數(shù)組的對象(array-lik...
    趙然228閱讀 659評論 0 0