Наборы в JavaScript
В этой статье мы будем обсуждать объект Set, предоставляемый ES6. Набор - это набор элементов, которые уникальны, т.е. ни один элемент не может быть повторен. Наборы в ES6 упорядочены: элементы набора могут повторяться в порядке вставки. Set может хранить любые типы значений, будь то примитивы или объекты.
Синтаксис:
новый Set ([it]); Параметр: it - это итеративный объект, все элементы которого добавлен в новый созданный набор, Если параметр не указан или передан null тогда новый созданный набор пуст. Возврат: Новый объект набора
Теперь создадим несколько наборов:
Пример:
// it contains// ["sumit","amit","anil","anish"]var set1 = new Set([ "sumit" , "sumit" , "amit" , "anil" , "anish" ]); // it contains 'f', 'o', 'd'var set2 = new Set( "fooooooood" ); // it contains [10, 20, 30, 40]var set3 = new Set([ 10 , 20 , 30 , 30 , 40 , 40 ]); // it is an empty setvar set4 = new Set(); |
Характеристики:
Set.prototype.size - возвращает количество элементов в наборе .
Методы:
- Set.prototype.add () - добавляет новый элемент с указанным значением в конец объекта Set.
Синтаксис:
set1.add (val); Параметр: val - это значение, добавляемое к набору. Возврат: Установленный объект
Пример:
// using Set.prototype.add(value)// creating an empty setvar set1 =newSet();// set contains 10, 20set1.add(10);set1.add(20);// As this method returns// the set object hence chanining// of add method can be done.set1.add(30).add(40).add(50);// prints 10, 20, 30, 40, 50console.log(set1); - Set.prototype.delete () - удаляет элемент с указанным значением из объекта Set.
Синтаксис:set1.delete (val); Параметр: val - это значение, которое нужно удалить из набора. Возврат: true, если значение успешно удалено из набора, иначе возвращает false.
Пример:
// using Set.protoype.delete(value)// creating set it contains// f, o , d, i, evar set1 =newSet("foooodiiiieee");// deleting e from the set// it prints trueconsole.log(set1.delete('e'));// set contains f, o, d, iconsole.log(set1);// deleting an element which is// not in the set// prints falseconsole.log(set1.delete('g')); - Set.prototype.clear () - удаляет весь элемент из набора.
Синтаксис:set1.clear (); Параметр: Без параметров Возврат: неопределенный
Пример:
// Using Set.prototype.clear()// creating a setvar set2 =newSet([10,20,30,40,50]);// prints {10, 20, 30, 40, 50}console.log(set2);// clearing set2set2.clear()// prints {}console.log(set2); - Set.prototype.entries () - возвращает объект итератора, который содержит массив, содержащий записи набора, в порядке вставки.
Синтаксис:set1.entries (); Параметр: Без параметров Возврат: Он возвращает объект-итератор, содержащий массив [значение, значение] для каждого элемент набора в порядке вставки.
Пример
// Using Set.prototype.entries()// creating setvar set1 =newSet();// adding element to the setset1.add(50);set1.add(30);set1.add(40);set1.add(20);set1.add(10);// using entries to get iteratorvar getEntriesArry = set1.entries();// each iterator is array of [value, value]// prints [50, 50]console.log(getEntriesArry.next().value);// prints [30, 30]console.log(getEntriesArry.next().value);// prints [40, 40]console.log(getEntriesArry.next().value); - Set.prototype.has () - возвращает истину, если указанное значение присутствует в объекте Set.
Синтаксис:set1.has (val); Параметр: val - значение для поиска в наборе Возврат: Истина, если значение присутствует, иначе возвращается ложь.
Пример:
// Using Set.prototype.has()// creating setvar set1 =newSet();// adding element to the setset1.add(50);set1.add(30);// prints trueconsole.log(set1.has(50));// prints falseconsole.log(set1.has(10)); - Set.prototype.values () - возвращает все значения из набора в том же порядке вставки.
Синтаксис:set1.values (); Параметр: Без параметров Возврат: Объект-итератор, содержащий все значения набора в том же порядке. как они вставлены.
- Set.prototype.keys () - он также возвращает все значения из набора в порядке вставки.
Примечание: - аналогично values () в случае Set
Синтаксис:set1.keys (); Параметр: Без параметров Возврат: Объект итератора, содержащий все значения набора в том же порядке как они вставлены.
Пример:
// Using Set.prototype.values()// Using Set.prototype.keys()// creating setvar set1 =newSet();// adding element to the setset1.add(50);set1.add(30);set1.add(40);set1.add("Geeks");set1.add("GFG");// getting all the valuesvar getValues = set1.values();// prints a SetIterator// that contains {50, 30, 40, "Geeks", "GFG"}console.log(getValues);// getting all the valuesvar getKeys = set1.keys();// prints a SetIterator// that contains {50, 30, 40, "Geeks", "GFG"}console.log(getKeys); - Set.prototype.forEach () - он выполняет заданную функцию один раз для каждого элемента в наборе в порядке вставки.
Синтаксис:set1.forEach (обратный вызов [, этот аргумент]); Параметр: обратный вызов - это функция, которая должна выполняться для каждого элемента набора. thisargument - Значение, которое будет использоваться как this при выполнении обратного вызова. Возврат: Неопределенный
Функция обратного вызова имеет три следующих параметра:
- ключ элемента
- значение элемента
- объект Set для прохождения
Пример:
// Using Set.prototype.forEach(callback[, thisarg])// creating setvar set1 =newSet();// adding element to the setset1.add({Firstname:"Sumit", Lastname:"Ghosh"});set1.add(50);set1.add(30);set1.add(40);set1.add("Geeks");set1.add("GFG");// Declaring a call back function// we are using only one parameter value// so it will ignore other two .function printOne(values){console.log(values);}// It prints value of all the element// of the setset1.forEach(printOne);// Declaring a call back function// we are using two parameter value// so it will ignore last onefunction printTwo(key, values){console.log(key+" "+values);}// As key and values are same in set// so it will print values twiceset1.forEach(printTwo);// Declaring a call back function// we are using all three parameter valuefunction printThree(key, values, set){// it will print key and value// and the set objectconsole.log(key+" "+values);console.log(set);}// It prints key and value of each// element and the entire set objectset1.forEach(printThree);Примечание: - В приведенном выше примере мы используем простую функцию обратного вызова, которая просто печатает элемент в консоли, ее можно спроектировать для выполнения любой сложной операции в соответствии с требованиями.
- Set.protoype [@@ iterator] () - возвращает функцию Set итератора, которая по умолчанию является функцией values ().
Синтаксис:set1 [Symbol.iterator] (); Параметр: Без параметров Возврат: Функция Set итератора, по умолчанию это values ().
Пример:
// using Set.protoype[@@Iterator]()var set1 =newSet(["sumit","sumit","amit","anish"]);var getit = set1[Symbol.iterator]();// Printing the values in the// iterator "getit"// prints {value: "sumit", done: false}console.log(getit.next());// prints {value: "amit", done: false}console.log(getit.next());// prints {value: "anish", done: false}console.log(getit.next());// prints {value: undefined, done: true}console.log(getit.next());
Установить операции:
- subSet () - возвращает истину, если набор A является подмножеством набора B.
Набор A называется подмножеством набора B , если все элементы набора A также присутствуют в наборе B.
Теперь давайте реализуем и используем функцию подмножества.
Пример:// check whether the set on which the// method is invoked is the subset of// otherset or notSet.prototype.subSet = function(otherSet){// if size of this set is greater// than otherSet then it can'nt be// a subsetif(this.size > otherSet.size)returnfalse;else{for(var elem ofthis){// if any of the element of// this is not present in the// otherset then return falseif(!otherSet.has(elem))returnfalse;}returntrue;}}// using the subSet function// Declaring different setsvar setA =newSet([10,20,30]);var setB =newSet([50,60,10,20,30,40]);var setC =newSet([10,30,40,50]);// prints trueconsole.log(setA.subSet(setB));// prints falseconsole.log(setA.subSet(setC));// prints trueconsole.log(setC.subSet(setB)); - union () - возвращает Set, который состоит из объединения Set A и Set B
Набор называется объединением двух наборов, если он содержит весь элемент набора A, а также все элементы набора B , но не содержит повторяющихся элементов.
Например: если элемент присутствует как в наборе A, так и в наборе B, тогда объединение наборов A и B будет содержать единственную копию элемента.
Разрешите реализовать и использовать функцию объединения
Пример:// Perform union operation between// called set and otherSetSet.prototype.union = function(otherSet){// creating new set to store unionvar unionSet =newSet();// iterate over the values and add// it to unionSetfor(var elem ofthis){unionSet.add(elem);}// iterate over the values and add it to// the unionSetfor(var elem of otherSet)unionSet.add(elem);// return the values of unionSetreturnunionSet;}// using the union function// Declaring values for set1 and set2var set1 =newSet([10,20,30,40,50]);var set2 =newSet([40,50,60,70,80]);// performing union operation// and storing the resultant set in// unionSetvar unionSet = set1.union(set2);// prints [10, 20, 30, 40, 50, 60, 70, 80]console.log(unionSet.values()); - Crossction () - возвращает пересечение Set A и Set B.
Набор называется пересечением наборов A и B, если он содержит элемент, который присутствует как в наборе A, так и в наборе B.
Разрешите реализовать и использовать функцию пересечения
Пример:// Performs intersection operation between// called set and otherSetSet.prototype.intersection = function(otherSet){// creating new set to store intersectionvar intersectionSet =newSet();// Iterate over the valuesfor(var elem of otherSet){// if the other set contains a// similar value as of value[i]// then add it to intersectionSetif(this.has(elem))intersectionSet.add(elem);}// return values of intersectionSetreturnintersectionSet;}// using intersection function// Declaring values for set1 and set2var set1 =newSet([10,20,30,40,50]);var set2 =newSet([40,50,60,70,80]);// performing union operation// and storing the resultant set in// intersectionsetvar intersectionSet = set1.intersection(set2);// prints {40, 50}console.log(intersectionSet.values()); - разница () - возвращает набор, который содержит разницу между набором A и набором B.
Набор называется разницей между наборами A и B, если он содержит набор элементов e, которые присутствуют в наборе A, но отсутствуют в наборе B.
Давайте реализуем и воспользуемся функцией разницы
Пример:// Performs difference operation between// called set and otherSetSet.prototype.difference = function(otherSet){// creating new set to store differencevar differenceSet =newSet();// iterate over the valuesfor(var elem ofthis){// if the value[i] is not present// in otherSet add to the differenceSetif(!otherSet.has(elem))differenceSet.add(elem);}// returns values of differenceSetreturndifferenceSet;}// using difference function// Declaring values for set1 and set2var set1 =newSet([10,20,30,40,50]);var set2 =newSet([40,50,60,70,80]);// performing union operation// and storing the resultant set in// intersectionsetvar differenceSet = set1.difference(set2);// prints {10, 20, 30}console.log(differenceSet);
Ссылка:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set
Эта статья предоставлена Сумитом Гошем . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.