欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JavaScript字典與集合應(yīng)用實(shí)例分析

這篇文章主要介紹“JavaScript字典與集合應(yīng)用實(shí)例分析”,在日常操作中,相信很多人在JavaScript字典與集合應(yīng)用實(shí)例分析問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”JavaScript字典與集合應(yīng)用實(shí)例分析”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

康縣網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),康縣網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為康縣超過千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的康縣做網(wǎng)站的公司定做!

JavaScript字典與集合應(yīng)用實(shí)例分析

字典

什么是字典

說到字典,第一時(shí)間想到的應(yīng)該就是新華字典,實(shí)際上,這跟編程中的字典類似,兩者都有一個(gè)特點(diǎn),就是一一對(duì)應(yīng)(yi yi dui ying),或者說是映射。

字典通常以**【鍵,值】** 對(duì)的形成存儲(chǔ),因?yàn)槭且枣I值對(duì)的形式存儲(chǔ),更方便通過key來獲取value

比如存儲(chǔ)用戶信息:

{
  'username': '一碗周',
  'age': 18
}

JavaScript中的字典

在JavaScript中,對(duì)象好像擁有字典的所有特點(diǎn),但是在ES6中新增Map,用來表示字典,這里的map不是翻譯成地圖,而是映射。

示例代碼如下:

// 創(chuàng)建一個(gè)字典
const map = new Map()

// 往字典中存儲(chǔ)信息
map.set('username', '一碗周')
map.set('age', 18)
console.log(map) // Map(2) { 'username' => '一碗周', 'age' => 18 }

字典的應(yīng)用

在學(xué)習(xí)鏈表的時(shí)候我們做了一個(gè)算法題,是力扣中題號(hào)為20的一道題,它的題目:有效的括號(hào),題目大意就是判斷給定字符串中的括號(hào)是否匹配,匹配返回true,否則返回false

解題思路如下:

  • 判斷字符串的長度是否為偶數(shù),不為偶數(shù)直接返回false,因?yàn)槔ㄌ?hào)都是成對(duì)出現(xiàn)的;

  • 新建一個(gè)棧;

  • 遍歷字符串,遍歷到每一項(xiàng)時(shí)如果時(shí)左括號(hào),將其壓入棧;如果是右括號(hào),與棧頂對(duì)比,如果相匹配則出棧,不匹配則返回false

我們?cè)瓉淼慕夥ǎ?/strong>

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    if (s.length % 2 !== 0) return false
    const stack = []
    for(let i = 0; i<s.length; i++) {
        const c = s[i] // 記錄當(dāng)前項(xiàng)
        if (c === '(' || c === '[' || c==='{') {
            stack.push(c)
        } else {
            const t = stack[stack.length - 1] // 獲取棧頂元素
            if (
                (t === '(' && c === ')') ||
                (t === '[' && c === ']') ||
                (t === '{' && c === '}') 
            ) {
                stack.pop()
            } else {
                return false
            }
        }
    }
    // 如果為0表示全部匹配,有剩余則表示不匹配
    return stack.length === 0
};

在上面的代碼中,條件判斷中的判斷條件非常的長,這時(shí)我們就可以利用字典來優(yōu)化這個(gè)寫法,

實(shí)現(xiàn)代碼如下:

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    // 1. 判斷字符串的長度是否為偶數(shù),不為偶數(shù)直接返回false,因?yàn)槔ㄌ?hào)都是成對(duì)出現(xiàn)的;
    if (s.length % 2 !== 0) return false
    const stack = []
    const map = new Map() // 將所有括號(hào)的對(duì)應(yīng)關(guān)系存儲(chǔ)在字典中
    map.set('(', ')')
    map.set('[', ']')
    map.set('{', '}')
    for(let i = 0; i<s.length; i++) {
        const c = s[i] // 記錄當(dāng)前項(xiàng)
        // 判斷是否存在 key 也就是左括號(hào),如果存儲(chǔ),將左括號(hào)存儲(chǔ)在棧中
        if (map.has(c)) {
            stack.push(c)
        } else {
            const t = stack[stack.length - 1] // 獲取棧頂元素
            if (map.get(t) === c) { // 獲取最后一個(gè)左括號(hào),判斷是否與右括號(hào)匹配
                stack.pop() // 出棧
            } else {
                return false
            }
        }
    }
    // 如果為0表示全部匹配,有剩余則表示不匹配
    return stack.length === 0
};

在這個(gè)代碼中,我們優(yōu)化了if語句中的判斷條件。

集合

什么是集合

集合是由一組無序且不重復(fù)的元素構(gòu)成。我們可以將集合看成一種特殊的數(shù)組,它的特殊之處就是無序且不重復(fù),這也就意味著我們不能通過下標(biāo)的方式進(jìn)行訪問,而且集合中不會(huì)出現(xiàn)重復(fù)的元素;

JS中的集合

在JavaScript中提供了集合這個(gè)數(shù)據(jù)結(jié)構(gòu),即Set,MDN中的描述如下:

Set對(duì)象是值的集合,你可以按照插入的順序迭代它的元素。Set中的元素只會(huì)出現(xiàn)一次,即Set中的元素是唯一的。

集合中的操作

在集合中主要有以下場(chǎng)景操作:

  • 添加元素到集合中;

  • 在集合中刪除某元素;

  • 判斷元素是否在集合中;

  • 清空集合;

  • 求交集、并集、差集;

除了最后一種Set對(duì)象就為我們提供了對(duì)應(yīng)的方法,示例代碼如下:

const arr = [1, 2, 3, 2, 3, 4, 5]
// 利用set實(shí)現(xiàn)去重
const set = new Set(arr) // [1, 2, 3, 4, 5]

// 往集合中添加元素
set.add(3) // [1, 2, 3, 4, 5] 添加失敗,集合中不允許出現(xiàn)重復(fù)元素
set.add(6) // [1, 2, 3, 4, 5, 6]

// 判斷元素是否在集合中
set.has(2) // true
set.has(7) // false

// 刪除集合中的元素
set.delete(1) // [2, 3, 4, 5, 6]

// 清空集合
set.clear()

交集、并集、差集的封裝

首先我們需要了解一下什么交集、并集、差集。

  • 并集:對(duì)于給定的兩個(gè)集合,返回一個(gè)包含兩個(gè)集合中所有元素的新集合

  • 交集:對(duì)于給定的兩個(gè)集合,返回一個(gè)包含兩個(gè)集合中共有元素的新集合

  • 差集:對(duì)于給定的兩個(gè)集合,返回一個(gè)包含所有存在于第一個(gè)集合且不存在于第二個(gè)集合的元素的新集合

下面這個(gè)圖更好的解釋了什么是交集、并集、差集。

JavaScript字典與集合應(yīng)用實(shí)例分析

封裝代碼如下:

// 求兩個(gè)集合的并集
export function union(setA, setB) {
  let _union = new Set(setA)
  for (let elem of setB) {
    _union.add(elem) // 因?yàn)榧现胁淮嬖谥貜?fù)元素
  }
  return _union
}

// 求兩個(gè)集合的交集
export function intersection(setA, setB) {
  let _intersection = new Set()
  for (let elem of setB) {
    if (setA.has(elem)) {
      _intersection.add(elem)
    }
  }
  return _intersection
}
// 求兩個(gè)集合的差集
export function difference(setA, setB) {
  let _difference = new Set(setA)
  for (let elem of setB) {
    _difference.delete(elem)
  }
  return _difference
}

封裝的這三個(gè)方法全部利用了集合不能重復(fù)的特性。

到此,關(guān)于“JavaScript字典與集合應(yīng)用實(shí)例分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

文章標(biāo)題:JavaScript字典與集合應(yīng)用實(shí)例分析
網(wǎng)站地址:http://aaarwkj.com/article42/ggpsec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、域名注冊(cè)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈ChatGPT、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

日韩中文字幕 在线播放| 国产精品欧美日韩中文| 日本中文字幕一区二区视频| 婷婷激情亚洲综合综合久久| 欧美黄色影院在线观看| 亚洲中文字幕第三页在线观看| 日韩乱码高清一本免费啪| 亚洲成人不卡一区二区三区| 欧美日韩国产激情另类| 九九在线免费视频蜜臀| 亚洲永久免费在线观看| 日韩中文字幕不卡免费| 中午字幕人妻少妇久久| 婷婷丁香六月激情综合| 五月婷婷丁香六月在线综合| 国产成人三级视频网站| 国产麻豆精品二区视频| 日本不卡二区高清三区| 日韩电影一区二区在线观看中文字幕 | 午夜影院在线免费观看三区| 蜜臀视频在线观看免费| 国产精品毛片一区二区三区| 人妻有码av中文字幕久久| 国产亚洲精品一区二区三在线观看 | 亚洲精品色在线网站国产呦| 四虎永久精品在线视频| 欧美电影剧情av在线| 不卡的视频在线观看| 欧美日韩一级一区二区| 99国产综合精品女| 亚洲色图熟女激情另类| 欧美大片免费在线播放| 国产91精品系列在线观看| 日韩av熟女人妻一区二| 中文字幕亚洲精品视频| 日韩有码一区在线观看| 国产999精品免费国产| 欧美日韩另类综合久久久| 黄片视频免费在线观看播放| 欧洲亚洲精品免费二区| 朋友的尤物人妻中文字幕|