From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../reference/global_objects/set/index.html | 242 +++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 files/uk/web/javascript/reference/global_objects/set/index.html (limited to 'files/uk/web/javascript/reference/global_objects/set/index.html') diff --git a/files/uk/web/javascript/reference/global_objects/set/index.html b/files/uk/web/javascript/reference/global_objects/set/index.html new file mode 100644 index 0000000000..6fdd6fd9b2 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/set/index.html @@ -0,0 +1,242 @@ +--- +title: Set +slug: Web/JavaScript/Reference/Global_Objects/Set +tags: + - set + - сет +translation_of: Web/JavaScript/Reference/Global_Objects/Set +--- +
{{JSRef}}
+ +
Об'єкт Set дає можливість зберігати значення будь-якого типу, будь то примітивні значення чи посилання на об'єкт.
+ +
{{EmbedInteractiveExample("pages/js/set-prototype-constructor.html")}}
+ + + +

Синтаксис

+ +
new Set([iterable]);
+ +

Параметри

+ +
+
iterable
+
Якщо передається об'єкт, що ітерується, то всі його елементи будуть додані до нового Set. Якщо цей параметр не визначений або має значення null, тоді новий Set буде порожнім.
+
+ +

Значення, що повертається

+ +

Новий об'єкт Set.

+ +

Опис

+ +

Об'єкти Set  - це колекції унікальних значень. Ви можете перебирати елементи Set у порядку вставки. Одне значення в Set може зустрічатися лише один раз; воно є унікальним в колекції Set.

+ +

Еквівалентність значення

+ +

Через те, що кожне значення в Set має бути унікальним, еквівалентність значення буде перевірена. У попередній версії специфікації ECMAScript це не було базовано на такому самому алгоритмі, що використовує оператор ===. Конкретніше, для Set +0 (що є суворо рівним -0 ) та -0 є різними значеннями. Проте, це було змінено у специфікації ECMAScript 2015. Дивіться більш детально про "Еквівалентність значень -0 і 0" у таблиці браузерної сумісності.

+ +

До того ж, NaN та undefined також можуть зберігатися в SetNaN вважається тим самим, що і NaN (хоча, NaN !== NaN ).

+ +

Властивості

+ +
+
Set.length
+
Значення властивості length є 0.
+
{{jsxref("Set.@@species", "get Set[@@species]")}}
+
Функція-конструктор, що використовується для строрення derived об'єктів.
+
{{jsxref("Set.prototype")}}
+
Представляє прототип для конструктора Set. Дозволяє додавання властивостей до всіх Set об'єктів.
+
+ +

Set instances

+ +

Усі Set сутності наслідуються від {{jsxref("Set.prototype")}}.

+ +

Властивості

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/Set/prototype','Properties')}}

+ +

Методи

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/Set/prototype','Methods')}}

+ +

Приклади

+ +

Використання об'єкта  Set

+ +
var mySet = new Set();
+
+mySet.add(1); // Set { 1 }
+mySet.add(5); // Set { 1, 5 }
+mySet.add(5); // Set { 1, 5 }
+mySet.add('some text'); // Set { 1, 5, 'some text' }
+var o = {a: 1, b: 2};
+mySet.add(o);
+
+mySet.add({a: 1, b: 2}); // o має посилання на інший об'єкт, тому це ок
+
+mySet.has(1); // true
+mySet.has(3); // false, 3 не було додано в Set
+mySet.has(5);              // true
+mySet.has(Math.sqrt(25));  // true
+mySet.has('Some Text'.toLowerCase()); // true
+mySet.has(o); // true
+
+mySet.size; // 5
+
+mySet.delete(5); // видаляє 5 з set
+mySet.has(5);    // false, 5 було видалено
+
+mySet.size; // 4, ми щойно видалили одне значення
+console.log(mySet);// Set {1, "some text", Object {a: 1, b: 2}, Object {a: 1, b: 2}}
+ +

Перебирання Set

+ +
// перебираємо елементи в set
+// виводить елементи у послідовності: 1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}
+for (let item of mySet) console.log(item);
+
+// виводить елементи у послідовності: 1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}
+for (let item of mySet.keys()) console.log(item);
+
+// виводить елементи у послідовності: 1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}
+for (let item of mySet.values()) console.log(item);
+
+// виводить елементи у послідовності: 1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}
+//(key та value тут мають одне й те саме значення)
+for (let [key, value] of mySet.entries()) console.log(key);
+
+// конвертує об'єкт Set в об'єкт Array за допомогою Array.from
+var myArr = Array.from(mySet); // [1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}]
+
+// наступне також буде працювати, якщо буде запущено в HTML документі
+mySet.add(document.body);
+mySet.has(document.querySelector('body')); // true
+
+// конвертація між Set та Array
+mySet2 = new Set([1, 2, 3, 4]);
+mySet2.size; // 4
+[...mySet2]; // [1, 2, 3, 4]
+
+// Перетинання може симулюватися через
+var intersection = new Set([...set1].filter(x => set2.has(x)));
+
+// різниця може бути симульована через
+var difference = new Set([...set1].filter(x => !set2.has(x)));
+
+// Перебирання елементів Set за допомогою forEach
+mySet.forEach(function(value) {
+  console.log(value);
+});
+
+// 1
+// 2
+// 3
+// 4
+ +

Імплементація базових операцій set

+ +
Set.prototype.isSuperset = function(subset) {
+    for (var elem of subset) {
+        if (!this.has(elem)) {
+            return false;
+        }
+    }
+    return true;
+}
+
+Set.prototype.union = function(setB) {
+    var union = new Set(this);
+    for (var elem of setB) {
+        union.add(elem);
+    }
+    return union;
+}
+
+Set.prototype.intersection = function(setB) {
+    var intersection = new Set();
+    for (var elem of setB) {
+        if (this.has(elem)) {
+            intersection.add(elem);
+        }
+    }
+    return intersection;
+}
+
+Set.prototype.difference = function(setB) {
+    var difference = new Set(this);
+    for (var elem of setB) {
+        difference.delete(elem);
+    }
+    return difference;
+}
+
+//Приклади
+var setA = new Set([1, 2, 3, 4]),
+    setB = new Set([2, 3]),
+    setC = new Set([3, 4, 5, 6]);
+
+setA.isSuperset(setB); // => true
+setA.union(setC); // => Set [1, 2, 3, 4, 5, 6]
+setA.intersection(setC); // => Set [3, 4]
+setA.difference(setC); // => Set [1, 2]
+
+
+ +

Зв'язок з об'єктами Array

+ +
var myArray = ['value1', 'value2', 'value3'];
+
+// Використовуйте звичайний конструктор Set для трансформації Array у Set
+var mySet = new Set(myArray);
+
+mySet.has('value1'); // повертає true
+
+// Використовуйте оператор spread для трансформації Set у Array.
+console.log([...mySet]); // Виведе у точності такий самий Array як і myArray
+ +

Зв'язок зі Strings

+ +
var text = 'India';
+
+var mySet = new Set(text);  // Set {'I', 'n', 'd', 'i', 'a'}
+mySet.size;  // 5
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-set-objects', 'Set')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-set-objects', 'Set')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Set")}}

+ +

Дівіться також

+ + -- cgit v1.2.3-54-g00ecf