Waxaa la daabacay

Liis-liiska JavaScript: Tilmaame ujeed looguulayaasha buuxa ah

Qorayaasha

Maxaad u Isticmaalaa Set?

Set waa qaab xog oo kuu ogolaada in aad kaydiso qiimo gaar ah oo nooc kasta ah. Waxay la mid tahay array, laakiin ma oggola qiimo labanlaab ah. Waa hab fiican oo lagu kaydinayo qiimo gaar ah oo nooc kasta ah. Mararka qaarkood waxaad rabtaa inaad kaydiso qiimo gaar ah oo ku jira array, laakiin ma rabto inaad ku wareegto array si aad u hubiso haddii qiimaha horeba uu jiro. Waa halka Set ay faa'iido u leedahay.

Maqaal hore, waxaan ka wada hadalnay Javascript Map. Set waa la mid Map, laakiin waxay kaliya kaydisaa furaha, ma kaydiso qiimaha. Waa hab fiican oo lagu hayaa qiimo gaar ah oo nooc kasta ah. Waxay aad u adag tahay in la isticmaalo Map kiisas badan. Sidaas awgeed, aan ka hadalno Set.

Set JavaScript Miyuu Yahay?

Shayada Set waa ururinta qiimo. Qiimo ku jira Set waxay ka muuqan kartaa hal mar oo kaliya; waa gaar u ah ururinta Set. Waxaad ku wareegi kartaa qaybaha Set iyadoo loo eegayo habka lagu daray. Nidaamka lagu daray wuxuu u dhigmaa habka lagu daray qayb kasta oo Set lagu daray iyadoo loo marayo habka add() si guul leh (taasi waa, ma jirin qayb la mid ah oo horeba u jirtay Set markii Set la soo wacay add()).

Sharaxaadu waxay u baahan tahay in Set lagu dhaqan geliyo "taas oo, celcelis ahaan, bixisa wakhtiyo helitaan oo hooseeya tirada qaybaha ku jira ururinta." Sidaa darteed, waxaa lagu matali karaa gudaha sida miis hash (oo leh O(1) raadinta), geed raadinta (oo leh O(log(N)) raadinta), ama qaab xog kasta oo kale, inta muddada ay ka fiican tahay O(N).

Sida Loo Abuuro Set?

Waxaa jira laba siyaabood oo lagu abuuro Set. Habka ugu horreeya waa in la isticmaalo Set constructor. Habka labaad waa in la isticmaalo Set object literal.

Set constructor

Set constructor wuxuu abuuraa shay Set cusub. Waxaad ku gudbin kartaa shay iterable sidii dood constructor. Qaybaha shayga iterable waxaa lagu dari doonaa Set cusub.

const set = new Set([1, 2, 3, 4, 5])

Set object literal

Set object literal wuxuu abuuraa shay Set cusub. Waxaad ku gudbin kartaa shay iterable sidii dood object literal. Qaybaha shayga iterable waxaa lagu dari doonaa Set cusub.

const set = {1, 2, 3, 4, 5};

Habka & Sifooyinka Set

HabkaSharaxaad
add()Waxay ku dartaa qayb cusub oo leh qiimo la cayimay oo ku jira Set object.
clear()Waxay ka saartaa dhammaan qaybaha Set object.
delete()Waxay ka saartaa qaybta la xiriirta qiimaha oo waxay soo celisaa qiimaha Set.prototype.has(value) ay hore u soo celisay. Set.prototype.has(value) way soo celin doontaa been ka dib.
entries()Waxay soo celisaa shay Iterator cusub oo ku jira array of [value, value] oo loogu talagalay qayb kasta oo ku jirta Set object, iyadoo loo eegayo habka lagu daray.
forEach()Waxay fulisaa shaqo la siiyay mar kasta oo loogu talagalay qiimo kasta oo ku jira Set object, iyadoo loo eegayo habka lagu daray.
has()Waxay soo celisaa boolean oo xaqiijinaya in qayb la joogo qiimaha la siiyay oo ku jira Set object.
keys()Waxay soo celisaa shay Iterator cusub oo ku jira qiimaha qayb kasta oo ku jirta Set object, iyadoo loo eegayo habka lagu daray.
values()Waxay soo celisaa shay Iterator cusub oo ku jira qiimaha qayb kasta oo ku jirta Set object, iyadoo loo eegayo habka lagu daray.
SifooyinkaSharaxaad
sizeWaxay soo celisaa tirada qiimaha ee ku jira Set object.

Tusaalooyinka Set

Ku dar qiimo Set

const set = new Set([1, 2, 3, 4, 5])
set.add(6)
console.log(Set) // Set { 1, 2, 3, 4, 5, 6 }

Ka saar qiimo Set

const set = new Set([1, 2, 3, 4, 5])
set.delete(3)
console.log(set) // Set { 1, 2, 4, 5 }

Hubi haddii qiimo uu jiro Set

const set = new Set([1, 2, 3, 4, 5])
console.log(set.has(3)) // true

Ku wareeg Set

const set = new Set([1, 2, 3, 4, 5])
for (const item of Set) {
  console.log(item)
}
// 1
// 2
// 3
// 4
// 5

Beddel Set ilaa Array

const set = new Set([1, 2, 3, 4, 5])
const array = Array.from(set)
console.log(array) // [1, 2, 3, 4, 5]

Beddel Array ilaa Set

const Array = [1, 2, 3, 4, 5]
const set = new Set(array)
console.log(Set) // Set { 1, 2, 3, 4, 5 }

Hel cabbirka Set

const set = new Set([1, 2, 3, 4, 5])
console.log(set.size) // 5

Nadiifi Set

const set = new Set([1, 2, 3, 4, 5])
set.clear()
console.log(set) // Set {}

Isku dar Set

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([6, 7, 8, 9, 10])
const set3 = new Set([...set1, ...set2])
console.log(set3) // Set { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

Hel isgoyska laba Set

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5, 6, 7, 8])
const set3 = new Set([...set1].filter((x) => set2.has(x)))
console.log(set3) // Set { 4, 5 }

Hel faraqa laba Set

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5, 6, 7, 8])
const set3 = new Set([...set1].filter((x) => !set2.has(x)))
console.log(set3) // Set { 1, 2, 3 }

Hubi haddii Set uu yahay subset of Set kale

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set2].every((x) => set1.has(x))) // true

Hubi haddii Set uu yahay superset of Set kale

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set1].every((x) => set2.has(x))) // false

Hubi haddii laba Set ay yihiin disjoint

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([6, 7, 8, 9, 10])
console.log([...set1].every((x) => !set2.has(x))) // true

Hubi haddii laba Set ay yihiin isku mid ah

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([1, 2, 3, 4, 5])
console.log(set1.size === set2.size && [...set1].every((x) => set2.has(x))) // true

Taageerada Browser-ka

ChromeChromeFirefoxFirefoxEdgeEdgeSafariSafariOperaOpera
49+44+12+10.1+36+

Set vs. Array

SetArray
Qiimo gaar ah, ma oggola qiimo labanlaab ahOggola qiimo labanlaab ah
Set waa ururinta qiimo aan lahayn nidaam gaar ahArray waa ururinta qiimo leh nidaam gaar ah
Set waa la wareegtaaArray waa la wareegtaa
Set waa ka gaabis badan yahay array marka la bilaabayo sababtoo ah wuxuu isticmaalaa hab hash.Array waa ka dhakhso badan yahay marka la bilaabayo
Waxqabadku waa ka fiican yahay marka la hubinayo jiritaanka qaybtaWaxqabadku waa ka fiican yahay marka la heli doono qaybta

Maqaalkan waxaa lagu daabacay markii ugu horeysay ee blog.imam.dev.

Xigashooyinka

  1. Mozilla Developer Network - Set

  2. W3Schools - Set

  3. ECMAScript® 2015 Language Specification - Set