- Nai-publish noong
JavaScript Set, Kaalaman na Dapat Malaman ng Bawat Baguhan na Programmer
- Mga May-akda
- Pangalan
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Bakit Set?
Ito ay isang data structure na nagpapahintulot sa iyo na mag-imbak ng mga natatanging halaga ng anumang uri. Katulad ito sa isang array, ngunit hindi nagpapahintulot ng mga duplicate na halaga. Ito ay isang magandang paraan upang mag-imbak ng mga natatanging halaga ng anumang uri. Minsan gusto mong mag-imbak ng mga natatanging halaga sa isang array, ngunit ayaw mong mag-loop sa buong Array para suriin kung ang halaga ay umiiral na. Dito pumapasok ang Set.
Sa isang nakaraang artikulo, tinalakay natin ang Javascript Map. Ang Set ay katulad ng Map, ngunit nag-iimbak lamang ito ng mga key, hindi ng mga halaga. Ito ay isang magandang paraan upang panatilihin ang mga natatanging halaga ng anumang uri. Napakabigat ng paggamit ng Map sa maraming kaso. Kaya't pag-usapan natin ang Set.
Ano ang JavaScript Set?
Ang mga Set object ay koleksyon ng mga halaga. Ang isang halaga sa Set ay maaaring mangyari nang isang beses lamang; ito ay natatangi sa koleksyon ng Set. Maaari kang mag-iterate sa pamamagitan ng mga elemento ng isang set sa pagkakasunod-sunod ng pagsingit. Ang pagkakasunod-sunod ng pagsingit ay tumutugma sa pagkakasunod-sunod kung saan naipasok ang bawat piraso sa Set ng add() na paraan nang matagumpay (iyon ay, walang magkaparehong elemento na nasa Set nang tumawag ang Set sa add()).
Ang pagtutukoy ay nangangailangan na ang mga set ay ipatupad "na, sa average, nagbibigay ng mga oras ng pag-access na sublinear sa bilang ng mga elemento sa koleksyon." Samakatuwid, maaari itong ipakita sa panloob bilang isang hash table (na may O(1) lookup), isang search tree (na may O(log(N)) lookup), o anumang iba pang data structure, hangga't ang kumplikado ay mas mahusay kaysa sa O(N).
Paano lumikha ng Set?
Mayroong dalawang paraan upang lumikha ng Set. Ang unang paraan ay ang paggamit ng Set constructor. Ang pangalawang paraan ay ang paggamit ng Set object literal.
Set constructor
Ang Set constructor ay lumilikha ng bagong Set object. Maaari kang magpasa ng isang iterable object bilang isang argumento sa constructor. Ang mga elemento ng iterable object ay idaragdag sa bagong Set.
const set = new Set([1, 2, 3, 4, 5])
Set object literal
Ang Set object literal ay lumilikha ng bagong Set object. Maaari kang magpasa ng isang iterable object bilang isang argumento sa object literal. Ang mga elemento ng iterable object ay idaragdag sa bagong Set.
const set = {1, 2, 3, 4, 5};
Mga Paraan & Katangian ng Set
Paraan | Paglalarawan |
---|---|
add() | Nagdaragdag ng bagong elemento na may tinukoy na halaga sa Set object. |
clear() | Tinatanggal ang lahat ng elemento mula sa Set object. |
delete() | Tinatanggal ang elemento na nauugnay sa halaga at ibinabalik ang halagang Set.prototype.has(value) ay ibabalik noon. Ang Set.prototype.has(value) ay magbabalik ng false pagkatapos. |
entries() | Ibinabalik ang bagong Iterator object na naglalaman ng isang array ng [value, value] para sa bawat elemento sa Set object, sa pagkakasunod-sunod ng pagsingit. |
forEach() | Nagpapatupad ng ibinigay na function isang beses para sa bawat halaga sa Set object, sa pagkakasunod-sunod ng pagsingit. |
has() | Ibinabalik ang boolean na nagsasabi kung ang isang elemento ay naroroon na may ibinigay na halaga sa Set object. |
keys() | Ibinabalik ang bagong Iterator object na naglalaman ng mga halaga para sa bawat elemento sa Set object sa pagkakasunod-sunod ng pagsingit. |
values() | Ibinabalik ang bagong Iterator object na naglalaman ng mga halaga para sa bawat elemento sa Set object sa pagkakasunod-sunod ng pagsingit. |
Katangian | Paglalarawan |
---|---|
size | Ibinabalik ang bilang ng mga halaga sa Set object. |
Mga Halimbawa ng Set
Magdagdag ng halaga sa Set
const set = new Set([1, 2, 3, 4, 5])
set.add(6)
console.log(Set) // Set { 1, 2, 3, 4, 5, 6 }
Magtanggal ng halaga mula sa Set
const set = new Set([1, 2, 3, 4, 5])
set.delete(3)
console.log(set) // Set { 1, 2, 4, 5 }
Suriin kung ang isang halaga ay umiiral sa Set
const set = new Set([1, 2, 3, 4, 5])
console.log(set.has(3)) // true
Mag-iterate sa pamamagitan ng Set
const set = new Set([1, 2, 3, 4, 5])
for (const item of Set) {
console.log(item)
}
// 1
// 2
// 3
// 4
// 5
I-convert ang Set sa Array
const set = new Set([1, 2, 3, 4, 5])
const array = Array.from(set)
console.log(array) // [1, 2, 3, 4, 5]
I-convert ang Array sa Set
const Array = [1, 2, 3, 4, 5]
const set = new Set(array)
console.log(Set) // Set { 1, 2, 3, 4, 5 }
Kunin ang laki ng Set
const set = new Set([1, 2, 3, 4, 5])
console.log(set.size) // 5
Linisin ang Set
const set = new Set([1, 2, 3, 4, 5])
set.clear()
console.log(set) // Set {}
Pagsamahin ang 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 }
Kunin ang intersection ng dalawang Sets
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 }
Kunin ang pagkakaiba ng dalawang Sets
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 }
Suriin kung ang Set ay isang subset ng isa pang Set
const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set2].every((x) => set1.has(x))) // true
Suriin kung ang Set ay isang superset ng isa pang Set
const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set1].every((x) => set2.has(x))) // false
Suriin kung ang dalawang Sets ay 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
Suriin kung ang dalawang Sets ay pantay
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
Suporta sa Browser
![]() | ![]() | ![]() | ![]() | ![]() |
---|---|---|---|---|
49+ | 44+ | 12+ | 10.1+ | 36+ |
Set vs. Array
Set | Array |
---|---|
Natatanging halaga, hindi pinapayagan ang duplicate na halaga | Pinapayagan ang duplicate na halaga |
Ang Set ay isang koleksyon ng mga halaga na walang partikular na pagkakasunod-sunod | Ang Array ay isang koleksyon ng mga halaga na may partikular na pagkakasunod-sunod |
Ang Set ay iterable | Ang Array ay iterable |
Ang Set ay mas mabagal kaysa sa isang array sa pag-initialize dahil gumagamit ito ng proseso ng hash. | Ang Array ay mas mabilis sa mga tuntunin ng pag-initialize |
Ang Pagganap ay mas mahusay kapag sinusuri ang pag-iral ng isang elemento | Ang Pagganap ay mas mahusay kapag na-access ang isang elemento |
Ang artikulong ito ay orihinal na nai-publish sa blog.imam.dev.