- Нашр шудааст дар
Маҷмӯи JavaScript: Дастури мукаммали барномасозон
- Муаллифон
- Ном
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Чаро Set?
Ин як сохтори маълумот аст, ки ба шумо имкон медиҳад, ки арзишҳои беназири ҳар гуна навъро нигоҳ доред. Он ба массив монанд аст, аммо арзишҳои дубораро иҷозат намедиҳад. Ин як роҳи хубест барои нигоҳ доштани арзишҳои беназири ҳар гуна. Баъзан шумо мехоҳед арзишҳои беназирро дар як массив нигоҳ доред, аммо шумо намехоҳед, ки дар массив барои санҷидани он ки ин арзиш аллакай вуҷуд дорад ё не, давр занед. Ин ҷост, ки Set ба кор меояд.
Дар мақолаи пешина, мо дар бораи Javascript Map сӯҳбат кардем. Set ба Map монанд аст, аммо он танҳо калидҳоро нигоҳ медорад, на арзишҳо. Ин як роҳи хубест барои нигоҳ доштани арзишҳои беназири ҳар гуна навъ. Истифодаи Map дар бисёр ҳолатҳо душвор аст. Аз ин сабаб, биёед дар бораи Set сӯҳбат кунем.
JavaScript Set чист?
Объектҳои Set маҷмӯаҳои арзишҳо мебошанд. Арзиш дар Set танҳо як маротиба метавонад пайдо шавад; он дар маҷмӯаи Set беназир аст. Шумо метавонед барои элементҳои Set дар тартиби воридшавӣ давр занед. Тартиби воридшавӣ ба тартибе мувофиқат мекунад, ки ҳар як қисм бо муваффақият ба Set бо усули add() ворид шудааст (яъне, вақте ки Set add() -ро даъват кардааст, ягон элементи якхела аллакай дар Set вуҷуд надошт).
Таъйинот талаб мекунад, ки маҷмӯаҳо бо "таъминот, ба ҳисоби миёна, вақти дастрасӣ медиҳанд, ки аз рӯи шумораи элементҳо дар маҷмӯа зерихаттӣ аст" амалӣ карда шаванд. Бинобар ин, он метавонад ба таври дохилӣ ҳамчун як ҷадвали хеш (бо ҷустуҷӯи O(1)), як дарахти ҷустуҷӯ (бо ҷустуҷӯи O(log(N))), ё ҳар гуна сохтори маълумотии дигар, ҳангоме ки мураккабӣ аз O(N) беҳтар аст, намоиш дода шавад.
Чӣ тавр Set эҷод кардан мумкин аст?
Ду роҳи эҷод кардани Set вуҷуд дорад. Роҳи аввал истифодаи конструктори Set аст. Роҳи дуюм истифодаи ададҳои маҷмӯаи объекти Set аст.
Конструктори Set
Конструктори Set як объекти нави Set эҷод мекунад. Шумо метавонед як объекти такрорииро ҳамчун як аргумент ба конструктор гузаронед. Элементҳои объекти такрорӣ ба Set-и нав илова карда мешаванд.
const set = new Set([1, 2, 3, 4, 5])
Ададҳои объекти Set
Ададҳои объекти Set як объекти нави Set эҷод мекунанд. Шумо метавонед як объекти такрорииро ҳамчун як аргумент ба ададҳои объект гузаронед. Элементҳои объекти такрорӣ ба Set-и нав илова карда мешаванд.
const set = {1, 2, 3, 4, 5};
Усулҳо ва хосиятҳои Set
Усул | Тавсиф |
---|---|
add() | Ба объекти Set як элементи нави бо арзиши муайян илова мекунад. |
clear() | Ҳамаи элементҳоро аз объекти Set нест мекунад. |
delete() | Элементи марбут ба арзишро нест мекунад ва арзишеро бармегардонад, ки Set.prototype.has(value) пештар баргардонда буд. Баъд аз он Set.prototype.has(value) баргаштан ба false хоҳад дод. |
entries() | Як объекти навтарини Iteratorро бармегардонад, ки як массив аз [value, value] -ро барои ҳар як элемент дар объекти Set, дар тартиби воридшавӣ, дар бар мегирад. |
forEach() | Як функсияи додашударо як маротиба барои ҳар як арзиш дар объекти Set, дар тартиби воридшавӣ, иҷро мекунад. |
has() | Як булеании таъкид мекунад, ки оё як элемент бо арзиши додашуда дар объекти Set вуҷуд дорад ё не, бармегардонад. |
keys() | Як объекти навтарини Iteratorро бармегардонад, ки арзишҳоро барои ҳар як элемент дар объекти Set дар тартиби воридшавӣ дар бар мегирад. |
values() | Як объекти навтарини Iteratorро бармегардонад, ки арзишҳоро барои ҳар як элемент дар объекти Set дар тартиби воридшавӣ дар бар мегирад. |
Хосият | Тавсиф |
---|---|
size | Шумораи арзишҳо дар объекти Set -ро бармегардонад. |
Мисолҳои Set
Илова кардани арзиш ба Set
const set = new Set([1, 2, 3, 4, 5])
set.add(6)
console.log(Set) // Set { 1, 2, 3, 4, 5, 6 }
Нест кардани арзиш аз Set
const set = new Set([1, 2, 3, 4, 5])
set.delete(3)
console.log(set) // Set { 1, 2, 4, 5 }
Санҷидани он, ки оё арзиш дар Set вуҷуд дорад ё не
const set = new Set([1, 2, 3, 4, 5])
console.log(set.has(3)) // true
Давр задан дар Set
const set = new Set([1, 2, 3, 4, 5])
for (const item of Set) {
console.log(item)
}
// 1
// 2
// 3
// 4
// 5
Табдил додани Set ба массив
const set = new Set([1, 2, 3, 4, 5])
const array = Array.from(set)
console.log(array) // [1, 2, 3, 4, 5]
Табдил додани массив ба Set
const Array = [1, 2, 3, 4, 5]
const set = new Set(array)
console.log(Set) // Set { 1, 2, 3, 4, 5 }
Гирифтани андозаи Set
const set = new Set([1, 2, 3, 4, 5])
console.log(set.size) // 5
Тоза кардани Set
const set = new Set([1, 2, 3, 4, 5])
set.clear()
console.log(set) // Set {}
Муттаҳид кардани 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 }
Гирифтани тақовути ду 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 }
Гирифтани фарқи байни ду 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 }
Санҷидани он, ки оё Set як зеримаҷмӯаи 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
Санҷидани он, ки оё Set як боломаҷмӯаи 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
Санҷидани он, ки оё ду Set ҷудо ҳастанд ё не
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
Санҷидани он, ки оё ду Set баробар ҳастанд ё не
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
Дастгирии Браузер
![]() | ![]() | ![]() | ![]() | ![]() |
---|---|---|---|---|
49+ | 44+ | 12+ | 10.1+ | 36+ |
Set vs. массив
Set | Массив |
---|---|
Арзиши беназир, арзиши дубораро иҷозат намедиҳад | Арзиши дубораро иҷозат медиҳад |
Set маҷмӯаи арзишҳо дар ҳеҷ тартибе махсус нест | Массив маҷмӯаи арзишҳо дар як тартиби махсус аст |
Set такроршаванда аст | Массив такроршаванда аст |
Set аз массив дар ибтидоӣ сусттар аст, зеро он аз як раванди хеш истифода мекунад. | Массив аз ҷиҳати ибтидоӣ зудтар аст |
Иҷроиш беҳтар аст, вақте ки мавҷудияти як элементро санҷед | Иҷроиш беҳтар аст, вақте ки ба як элемент дастрасӣ пайдо кунед |
Ин мақола дар аввал дар blog.imam.dev нашр шудааст.