国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

我對(duì)JS集合的簡(jiǎn)單學(xué)習(xí)

paney129 / 1784人閱讀

摘要:我對(duì)集合的學(xué)習(xí)第一步知道相關(guān)概念集合是由一組無(wú)序且唯一的項(xiàng)組成的,在中已經(jīng)實(shí)現(xiàn)了類似的類。就是集合第二步實(shí)現(xiàn)相關(guān)操作方法首先實(shí)現(xiàn)方法,判斷值是否在集合中,返回布爾值。操作符還有另外一種實(shí)現(xiàn)方法,方法返回表明一個(gè)對(duì)象是否具有特定屬性的布爾值。

我對(duì)集合的學(xué)習(xí) 第一步知道相關(guān)概念

集合是由一組無(wú)序且唯一的項(xiàng)組成的,在ES6中已經(jīng)實(shí)現(xiàn)了類似的Set類。

function Set() {
    var items = {}; //items就是集合
}
第二步實(shí)現(xiàn)相關(guān)操作方法

首先實(shí)現(xiàn)has(value)方法,判斷值是否在集合中,返回布爾值。因?yàn)榧鲜遣辉试S重復(fù)元素存在的,其他方法調(diào)用這個(gè)方法判斷是否值已存在。

this.has = function(value) {
    return value in items; //in操作符
};

還有另外一種實(shí)現(xiàn)方法,hasOwnProperty()方法返回表明一個(gè)對(duì)象是否具有特定屬性的布爾值。

this.has = function(value) {
    return items.hasOwnProperty(value);
};

接下來(lái)實(shí)現(xiàn)add()方法,向集合中添加一個(gè)新的項(xiàng)。

this.add = function(value) {
    if(!this.has(value)) { //判斷要添加的元素是否已經(jīng)存在
        items[value] = value; //注意同時(shí)作為鍵和值保存,有利于查找這個(gè)值
        return true;
    }
    return false; //添加的元素已經(jīng)存在,不再添加
};

接下來(lái)實(shí)現(xiàn)remove()方法,從集合中移除一個(gè)值。

this.remove = function(value) {
    if(this.has(value)) {
        delete items[value]; //刪除對(duì)象的屬性
        return true;
    }
    return false;
};

接下來(lái)實(shí)現(xiàn)clear()方法,移除集合所有值。

this.clear = function() {
    items = {}; //空對(duì)象重新賦值給它
};

接下來(lái)實(shí)現(xiàn)size()方法,返回集合中有多少項(xiàng)。

第一種實(shí)現(xiàn)方法,使用一個(gè)length變量

第二種實(shí)現(xiàn)方法,使用Object.keys()

this.size = function() {
    return Object.keys(items).length; //返回一個(gè)對(duì)象的所有可枚舉的屬性名組成的數(shù)組,但不包括原型中的屬性,也不能保證按照順序輸出屬性名
};

第三種實(shí)現(xiàn)方法,手動(dòng)提取items對(duì)象的每一個(gè)屬性,記錄個(gè)數(shù)

this.size = function() {
    var count = 0;
    for(var prop in items) { //遍歷items的所有屬性
        if(items.hasOwnProperty(prop)) { //防止計(jì)數(shù)時(shí)計(jì)算到原型的屬性
            ++count;
        }
    }
    return count;
};

實(shí)現(xiàn)values()方法,返回所有值組成的數(shù)組。

this.values = function() {
    return Object.keys(items); //獲得鍵也就獲得了值(因?yàn)樗麄円粯影。?};
第三步簡(jiǎn)單使用Set類
var set = new Set();
set.add(1); 
console.log(set.values()); //["1"]
console.log(set.has(1)); //true
console.log(set.size()); //1

set.add(2);
console.log(set.values()); //["1", "2"]

set.remove(1); 
console.log(set.values()); //["2"]
第四步操作集合

并集:兩個(gè)集合,返回一個(gè)包含兩個(gè)集合中所有元素的新集合

可以用來(lái)合并兩個(gè)元素,而且保證了單一性。

this.union = function(otherSet) {
    var unionSet = new Set(); //并集結(jié)果
    var values = this.values();
    for(var i = 0; i < values.length; i++) { //遍歷第一個(gè)集合全部放到新集合
        unionSet.add(values[i]);
    }
    values = otherSet.values();
    for(var i = 0; i < values.length; i++) { //遍歷第二個(gè)集合全部放到新集合,使用了add方法保證了單一性
        unionSet.add(values[i]);
    }
    return unionSet;
}

交集:兩個(gè)集合,返回一個(gè)包含兩個(gè)集合中共有元素的新集合

可以用來(lái)取兩者共有的部分。

this.intersection = function(otherSet) {
    var intersectionSet = new Set();
    var values = this.values();
    for(var i = 0; i < values.length; i++) {
        if(otherSet.has(values[i])) {
            intersectionSet.add(values[i])    
        }
    }
    return intersectionSet;
}

差集:元素存在于A且不存在于B中

this.difference = functiong(otherSet) {
    var differenceSet = new Set();
    var values = this.values();
    for(var i = 0; i < values.length; i++) { //遍歷了A
        if(!otherSet.has(values[i])) { 
            differenceSet.add(values[i]);
        }
    }
    return differenceSet;
}

子集:A中的每一個(gè)元素都在B中

this.subset = function(otherSet) {
    if(this.size() > otherSet.size()) return false;
    var values = this.values();
    for(var i = 0; i < values.length; i++) {
        if(!otherSet.has(values[i])) { //只要有一個(gè)A中的元素不在B中,返回false
            return false;    
        }
    }
    return true;
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/82137.html

相關(guān)文章

  • 我對(duì)JS字典簡(jiǎn)單學(xué)習(xí)

    摘要:我對(duì)字典的簡(jiǎn)單學(xué)習(xí)字典的概念集合字典和散列表都可以來(lái)存儲(chǔ)不重復(fù)的值。字典也被稱為映射。中有集合類的實(shí)現(xiàn),也有字典類的實(shí)現(xiàn)。相關(guān)操作方法實(shí)現(xiàn)方法,判斷某個(gè)鍵值是否在這個(gè)字典中,有則返回。實(shí)現(xiàn)方法,將字典所有的值以數(shù)組的形式返回。 我對(duì)JS字典的簡(jiǎn)單學(xué)習(xí) 字典的概念 集合、字典和散列表都可以來(lái)存儲(chǔ)不重復(fù)的值。在集合中我們使用[值,值]來(lái)保存,在字典和散列表中使用[鍵,值]來(lái)存儲(chǔ)數(shù)據(jù)。 字典...

    CntChen 評(píng)論0 收藏0
  • 我對(duì)JS簡(jiǎn)單學(xué)習(xí)

    摘要:我對(duì)棧的學(xué)習(xí)因?yàn)槭莻€(gè)新手,所以都是最簡(jiǎn)單的知識(shí)學(xué)習(xí)梳理。棧是一種遵從后進(jìn)先出原則的有序集合,新添加的或者待刪除的元素都保留在棧的末尾,稱作棧頂,另一端叫做棧底。棧的學(xué)習(xí)棧的創(chuàng)建創(chuàng)建一個(gè)類來(lái)表示棧。對(duì)于棧來(lái)說(shuō)只能用和方法來(lái)進(jìn)行添加和刪除元素。 我對(duì)棧的學(xué)習(xí) 因?yàn)槭莻€(gè)新手,所以都是最簡(jiǎn)單的知識(shí)學(xué)習(xí)梳理。 什么是棧 數(shù)組是計(jì)算機(jī)科學(xué)中最常用的數(shù)據(jù)結(jié)構(gòu),是數(shù)據(jù)元素的集合。有時(shí)候我們需要一種添加...

    Cobub 評(píng)論0 收藏0
  • 我對(duì)JS鏈表簡(jiǎn)單學(xué)習(xí)

    摘要:我對(duì)鏈表的學(xué)習(xí)什么是鏈表要存儲(chǔ)多個(gè)元素,數(shù)組可能是最常用的數(shù)據(jù)結(jié)構(gòu)。鏈表的學(xué)習(xí)創(chuàng)建一個(gè)鏈表各種方法表示要加入列表的項(xiàng),它包含一個(gè)屬性以及一個(gè)屬性,表示要添加到列表的值,表示指向列表下一個(gè)節(jié)點(diǎn)項(xiàng)的指針。 我對(duì)JS鏈表的學(xué)習(xí) 什么是鏈表 要存儲(chǔ)多個(gè)元素,數(shù)組可能是最常用的數(shù)據(jù)結(jié)構(gòu)。這種數(shù)據(jù)結(jié)構(gòu)非常方便,但是有一個(gè)缺點(diǎn):從數(shù)組的起點(diǎn)或者中間插入或移除項(xiàng)的成本非常高,因?yàn)樾枰苿?dòng)元素(比如你插...

    余學(xué)文 評(píng)論0 收藏0
  • 我對(duì)JS散列表簡(jiǎn)單學(xué)習(xí)

    摘要:對(duì)散列表的簡(jiǎn)單學(xué)習(xí)類也叫類,是類的一種散列表實(shí)現(xiàn)方式。鍵值散列函數(shù)散列值形成散列表地址數(shù)據(jù)鍵值對(duì)相關(guān)操作方法創(chuàng)建一個(gè)散列表實(shí)現(xiàn)一個(gè)散列函數(shù),即將碼值相加的方法。 對(duì)JS散列表的簡(jiǎn)單學(xué)習(xí) HashTable類也叫HashMap類,是Dictionary類的一種散列表實(shí)現(xiàn)方式。 散列算法的作用是盡可能快的在數(shù)據(jù)結(jié)構(gòu)中找到一個(gè)值。 在之前的學(xué)習(xí)中,如果你想要獲得數(shù)據(jù)結(jié)構(gòu)中的一個(gè)值,需要遍歷整...

    lindroid 評(píng)論0 收藏0
  • 學(xué)習(xí)實(shí)踐 - 收藏集 - 掘金

    摘要:官網(wǎng)地址聊天機(jī)器人插件開發(fā)實(shí)例教程一創(chuàng)建插件在系統(tǒng)技巧使你的更加專業(yè)前端掘金一個(gè)幫你提升技巧的收藏集。我會(huì)簡(jiǎn)單基于的簡(jiǎn)潔視頻播放器組件前端掘金使用和實(shí)現(xiàn)購(gòu)物車場(chǎng)景前端掘金本文是上篇文章的序章,一直想有機(jī)會(huì)再次實(shí)踐下。 2道面試題:輸入U(xiǎn)RL按回車&HTTP2 - 掘金通過(guò)幾輪面試,我發(fā)現(xiàn)真正那種問(wèn)答的技術(shù)面,寫一堆項(xiàng)目真不如去刷技術(shù)文章作用大,因此刷了一段時(shí)間的博客和掘金,整理下曾經(jīng)被...

    mikyou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<