新的數(shù)據(jù)結(jié)構(gòu)

在ECMAScript中泞边,定義了下面幾種基本的數(shù)據(jù)結(jié)構(gòu),分為值類型和引用類型:
值類型數(shù)據(jù)結(jié)構(gòu):

  • String - 字符串
  • Number - 數(shù)值(包括整型和浮點(diǎn)型)
  • Boolean - 布爾型(true與false)
  • Null - 空值
  • Undefined - 未定義值
    引用類型數(shù)據(jù)結(jié)構(gòu):
  • Object - 對象
  • Array - 數(shù)組
  • RegExp - 正則表達(dá)式
  • Date - 日期
  • Error - 錯誤
      嚴(yán)格意義上裙犹,ECMAScript只有Object一種引用類型尽狠,Array、Date等都是派生于Object的子類型叶圃。

Set無序不可重復(fù)集合

語法:

const set = new Set()

const set = new Set([ 1, 2, 3 ])
操作方法 方法內(nèi)容
set.add(value) 添加元素到集合內(nèi)
set.delete(value) 刪除集合內(nèi)指定元素
set.clear() 清空集合元素
set.forEach(callbackFn, [, context]) 遍歷集合內(nèi)所有元素袄膏,并作為第一參數(shù)調(diào)用callbackFn
set.has(value) 檢查集合內(nèi)是否含有元素
const set = new Set()

// 添加元素
set
    .add(1)
    .add(2)
    .add(3)
    .add(3)
console.log(set) //=> Set { 1, 2, 3 }

set.has(2) //=> true

// 刪除元素
set.delete(2)
console.log(set) //=> Set { 1, 3 }

set.has(2) //=> false

// 清空集合
set.clear()
console.log(set) //=> Set {}

// 遍歷集合
const set = new Set([ 1, 2, 3, 4 ])

set.forEach(item => {
    console.log(item)
})
//=>
// 1
// 2
// 3
// 4

// 還可以為集合的forEach方法的回調(diào)函數(shù)指定一個上下文
set.forEach(item => {
    console.log(item * this.foo)
}, { foo: 2 })
//=>
// 2
// 4
// 6
// 8

Map映射類型

語法:

const map = new Map()

const map = new Map([ [ 'foo', 1 ], [ 'foo', 2 ] ])
console.log(map.get('foo')) //=> 2
操作方法 方法內(nèi)容
map.set(key, value) 添加鍵值到映射中
map.get(key) 獲取某個鍵的對應(yīng)值
map.delete(key) 移除某一鍵值對
map.clear() 清空映射
map.entries() 返回一個以二元數(shù)組(鍵值對)作為元素的類數(shù)組對象
map.has(key) 檢查映射中是否包含某一鍵值對
map.keys() 返回一個以所有鍵作為元素的可迭代對象
map.values() 返回一個所有值作為元素的可迭代對象
map.size 映射的鍵值對的數(shù)量
const map = new Map()

// 添加鍵值對
map.set('foo', 'Hello')
map.set('bar', 'World')
map.set('bar', 'ES2015')

// 刪除鍵值對
map.delete('foo')

// 清空
map.clear()

// 獲取
const map = new Map()
map.set('foo', 'bar')
console.log(map.get('foo')) //=> bar

// 檢查
const map = new Map([ 'foo', 1 ])
console.log(map.has('foo')) //=> true
console.log(map.has('bar')) //=> false

// 遍歷
const map = new Map([ ['foo', 1 ], [ 'bar', 2 ] ])
console.log(Array.from(map.entries())) //=> [ [ 'foo', 1 ], [ 'bar', 2 ]]

// for-of 和forEach內(nèi)部均是先利用entries()將map轉(zhuǎn)換為一個類數(shù)組對象,再進(jìn)行迭代
for(const [ key, value ] of map) {
    console.log(`${key}: ${value}`)
}
//=>
// foo: 1
// bar: 2

map.forEach((value, key, map) => {
    console.log(`${key}: ${value}`)
})

Map的JSON序列化

const map = new Map()
map.set('foo', 1)
map.set('bar', 2)

// Object的JSON序列化結(jié)果是標(biāo)準(zhǔn)的對象字面量形式盗似,而Map的JSON序列化結(jié)果是以關(guān)聯(lián)數(shù)組的形式表達(dá)
const str = JSON.stringify(map)
console.log(str) //=> [["foo",1],["bar",2]]

// ... 數(shù)據(jù)傳輸后
const otherMap = new Map(JSON.parse(str))
console.log(map.get('bar')) //=> 2
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哩陕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赫舒,更是在濱河造成了極大的恐慌悍及,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件接癌,死亡現(xiàn)場離奇詭異心赶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缺猛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門缨叫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荔燎,你說我怎么就攤上這事耻姥。” “怎么了有咨?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵琐簇,是天一觀的道長。 經(jīng)常有香客問我座享,道長婉商,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任渣叛,我火速辦了婚禮丈秩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淳衙。我一直安慰自己蘑秽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布箫攀。 她就那樣靜靜地躺著肠牲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匠童。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天塑顺,我揣著相機(jī)與錄音汤求,去河邊找鬼俏险。 笑死,一個胖子當(dāng)著我的面吹牛扬绪,可吹牛的內(nèi)容都是我干的竖独。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼挤牛,長吁一口氣:“原來是場噩夢啊……” “哼莹痢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起墓赴,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤竞膳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后诫硕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坦辟,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年章办,在試婚紗的時候發(fā)現(xiàn)自己被綠了锉走。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡藕届,死狀恐怖挪蹭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情休偶,我是刑警寧澤梁厉,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站椅贱,受9級特大地震影響懂算,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庇麦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一计技、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧山橄,春花似錦垮媒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饮醇,卻和暖如春它抱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朴艰。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工观蓄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留混移,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓侮穿,卻偏偏與公主長得像歌径,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子亲茅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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