Weşand li ser

Seta JavaScript: Dest pêşmergeyên pêşdebiran

Nivîskar

Çima Set?

Set, yek strukturê daneyê ye ku destûrê dide te ku nirxên yekane yên her cureyê hilîne. Ew dişibihe rêzekê, lê destûrê nade nirxên dubare. Ew rêyek baş e ji bo parastina nirxên yekane yên her cureyê. Carinan tu dixwazî ​​nirxên yekane di rêzekê de hilîne, lê tu naxwazî ​​di rêzekê de bigere da ku kontrol bikî ka nirx berê heye yan na. Ew derê ye ku Set dibe alîkar.

Di nivîsekî berê de, me Xeta Javascript nîqaş kir. Set dişibihe Xetê, lê ew tenê miftehên hildigire, ne nirxên. Ew rêyek baş e ji bo parastina nirxên yekane yên her cureyê. Di gelek rewşan de bikaranîna Xetê zehmet e. Ji ber vê yekê ka em behsa Setê bikin.

Setê JavaScript çi ye?

Objeyên Set, komên nirxan in. Nirxek di Setê de tenê carekê dikare hebe; ew di komê Setê de yekane ye. Tu dikarî ji nirxên Setê bi rêza xwe ya zêdekirinê re derbas bibî. Rêza zêdekirinê li gor rêza her parçeyê ye ku bi serkeftî ji hêla rêbaza add() ve hatî zêdekirin li Setê (ew tê wateyê ku dema Set add() bang dike, tiştekî wekhev berê di Setê de tune bû).

Pêşnûma pêwîst dike ku set bi vî rengî bêne pêkanîn "ku, bi navînî, demên gihîştina wan kêmtir ji hejmara elementên di komê de bin." Ji ber vê yekê, ew dikare di hundur de wekî tabloyek hash (bi lêgerîna O(1)), darê lêgerînê (bi lêgerîna O(log(N))), an her strukturê din ê daneyê were temsîl kirin, heya ku tevlihevî çêtir be ji O(N).

Çawa Setê çêbikin?

Du rê hene ku meriv Setê çêbike. Rêbaza yekem ev e ku meriv ji constructorê Setê sûd werbigire. Rêbaza duyemîn jî ev e ku meriv ji literalê objekta Setê sûd werbigire.

Constructorê Set

Constructorê Setê, objeyek nû ya Setê çêdike. Tu dikarî objektek iterable wekî argumanekê ji constructorê re bişî nî. Elementên objekta iterable dê bên zêdekirin li Setê nû.

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

Literalê objekta Set

Literalê objekta Setê, objeyek nû ya Setê çêdike. Tu dikarî objektek iterable wekî argumanekê ji literalê objekta Setê re bişî nî. Elementên objekta iterable dê bên zêdekirin li Setê nû.

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

Rêbaz û Taybetmendîyên Setê

RêbazPênase
add()Elementê nû bi nirxek taybetî zêde dike li objeya Setê.
clear()Hemû elementên ji objeya Setê jê dike.
delete()Elementê girêdayî nirxê jê dike û nirxê vedigerîne ku Set.prototype.has(value) berê jê re vedigerand. Set.prototype.has(value) piştî wê dê false vegerîne.
entries()Iteratorê nû vedigerîne ku tê de rêzekî [value, value] ji bo her elementê di objeya Setê de, bi rêza zêdekirinê heye.
forEach()Carekê ji bo her nirxekê di objeya Setê de, bi rêza zêdekirinê, fonksiyonekê bicih tîne.
has()Boleanek vedigerîne ku teqez dike ka element bi nirxê danî di objeya Setê de heye yan na.
keys()Iteratorê nû vedigerîne ku tê de nirxên ji bo her elementê di objeya Setê de, bi rêza zêdekirinê heye.
values()Iteratorê nû vedigerîne ku tê de nirxên ji bo her elementê di objeya Setê de, bi rêza zêdekirinê heye.
TaybetmendîPênase
sizeHejmara nirxan di objeya Setê de vedigerîne.

Nimûneyên Setê

Nirxekî li Setê zêde bike

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

Nirxekî ji Setê jê bike

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

Kontrol bike ka nirxek di Setê de heye yan na

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

Ji Setê re derbas bibe

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

Setê veguherîne rêzekê

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

Rêzekê veguherîne Setê

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

Pîvana Setê bigire

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

Setê paqij bike

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

Setê bi hev re bicivîne

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 }

Hevpariya du Setan bigire

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 }

Cudahiya di navbera du Setan de bigire

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 }

Kontrol bike ka Set, ji bo Setê din, komek binirx e yan na

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

Kontrol bike ka Set, ji bo Setê din, komek bilindtir e yan na

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

Kontrol bike ka du Set, cuda ne yan na

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

Kontrol bike ka du Set, wekhev in yan na

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

Piştgiriya Gerokê

ChromeChromeFirefoxFirefoxEdgeEdgeSafariSafariOperaOpera
49+44+12+10.1+36+

Set li hember Rêzek

SetRêzek
Nirxê yekane, destûrê nade nirxê dubareDestûrê dide nirxê dubare
Set, komek nirx e bêyî ku rêzek taybetî hebeRêzek, komek nirx e bi rêzek taybetî
Set, iterable yeRêzek, iterable ye
Set, ji rêzekê di destpêkirinê de hêdîtir e ji ber ku pêvajoyek hashê bikar tîne.Rêzek, di destpêkirinê de bileztir e
Performance, di kontrolkirina hebûna elemanekê de, baştir ePerformance, di gihîştina elemanekê de, baştir e

Ev nivîs bi orjînal li ser blog.imam.dev hatî weşandin.

Çavkanî

  1. Mozilla Developer Network - Set

  2. W3Schools - Set

  3. ECMAScript® 2015 Language Specification - Set