ЈаваСцрипт и ВеакСет

У овом упутству ћете научити о ЈаваСцрипт скуповима и ВеакСетовима уз помоћ примера.

ЈаваСцрипт ЕС6 је представио два нова структура података, односно Setи WeakSet.

Скуп је сличан низу који нам омогућава да складиштимо више предмета као што су бројеви, низови, објекти итд. Међутим, за разлику од низа, скуп не може да садржи дупле вредности.

Креирајте ЈаваСцрипт сет

Да бисте креирали а Set, потребно је да користите new Set()конструктор. На пример,

 // create Set const set1 = new Set(); // an empty set console.log(set1); // Set () // Set with multiple types of value const set2 = new Set((1, 'hello', (count : true))); console.log(set2); // Set (1, "hello", (count: true))

Када се дупле вредности преносе у Setобјекат, дупле вредности се изузимају.

 // Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)

Приступите елементима скупа

Можете приступити Setелементима помоћу values()методе и проверити да ли постоји елемент унутар Setпомоћу has()методе. На пример,

 const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)

Помоћу has()методе можете да проверите да ли је елемент у скупу. На пример,

 const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));

Додавање нових елемената

Помоћу add()методе можете додати елементе у скуп . На пример,

 const set = new Set((1, 2)); console.log(set.values()); // adding new elements set.add(3); console.log(set.values()); // adding duplicate elements // does not add to Set set.add(1); console.log(set.values());

Оутпут

 Сет Итератор (1, 2) Сет Итератор (1, 2, 3) Сет Итератор (1, 2, 3)

Уклањање елемената

Можете користити методу clear()и и delete()за уклањање елемената из скупа.

delete()Метод уклања специфичну елемент из А Set. На пример,

 const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // removing a particular element set.delete(2); console.log(set.values()); // Set Iterator (1, 3)

clear()Метод уклања све елементе у задњих Set. На пример,

 const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // remove all elements of Set set.clear(); console.log(set.values()); // Set Iterator ()

Итерате Сетс

Можете да прелиставате Сет елементе помоћу фор… оф лооп или форЕацх () методе. Елементима се приступа по редоследу уметања. На пример,

 const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )

Оутпут

 1 2 3

ЈаваСцрипт ВеакСет

ВеакСет је сличан Сету. Међутим, ВеакСет може садржати само објекте, док скуп може садржати било који тип података као што су низови, бројеви, објекти итд. На пример,

 const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () let obj = ( message: 'Hi', sendMessage: true ) // adding object (element) to WeakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((message: "Hi", sendMessage: true))

Када покушате да додате друге типове података осим објеката, ВеакСет баца грешку. На пример,

 // trying to add string to WeakSet weakSet.add('hello'); // throws error // TypeError: Attempted to add a non-object key to a WeakSet console.log(weakSet);

ВеакСет методе

ВеакСетс имају методе add(), delete()и has(). На пример,

 const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () const obj = (a:1); // add to a weakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((a: 1)) // check if an element is in Set console.log(weakSet.has(obj)); // true // delete elements weakSet.delete(obj); console.log(weakSet); // WeakSet ()

Слаби скупови нису поновљиви

За разлику од Сетс-а, ВеакСетс-а није могуће поновити. На пример,

 const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )

Математичке операције скупова

У ЈаваСцрипт-у Сет не нуди уграђене методе за извођење математичких операција као што су унија, пресек, разлика итд. Међутим, можемо да креирамо програме за извођење тих операција.

Пример: Подесите Унион Унион

 // perform union operation // contain elements of both sets function union(a, b) ( let unionSet = new Set(a); for (let i of b) ( unionSet.add(i); ) return unionSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = union(setA, setB); console.log(result);

Оутпут

 Сет („јабука“, „манго“, „поморанџа“, „грожђе“, „банана“)

Пример: Поставите операцију пресека

 // perform intersection operation // elements of set a that are also in set b function intersection(setA, setB) ( let intersectionSet = new Set(); for (let i of setB) ( if (setA.has(i)) ( intersectionSet.add(i); ) ) return intersectionSet; ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = intersection(setA, setB); console.log(result);

Оутпут

 Сет ("јабука")

Пример: Подесите операцију разлике

 // perform difference operation // elements of set a that are not in set b function difference(setA, setB) ( let differenceSet = new Set(setA) for (let i of setB) ( differenceSet.delete(i) ) return differenceSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = difference(setA, setB); console.log(result);

Оутпут

 Сет („манго“, „наранџаста“)

Пример: Подесите операцију подскупа

 // perform subset operation // true if all elements of set b is in set a function subset(setA, setB) ( for (let i of setB) ( if (!setA.has(i)) ( return false ) ) return true ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('apple', 'orange')); let result = subset(setA, setB); console.log(result);

Оутпут

 истина

ЈаваСцрипт Setsи WeakSetsуведени су у ЕС6 . Неки прегледачи можда не подржавају њихову употребу. Да бисте сазнали више, посетите подршку за ЈаваСцрипт сетове и подршку за ВеакСетс ЈаваСцрипт.

Занимљиви Чланци...