diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:43:23 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:43:23 -0500 |
commit | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (patch) | |
tree | a9ef8ac1e1b8fe4207b6d64d3841bfb8990b6fd0 /files/uk/web/javascript/reference/global_objects/set/index.html | |
parent | 074785cea106179cb3305637055ab0a009ca74f2 (diff) | |
download | translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.gz translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.bz2 translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.zip |
initial commit
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/set/index.html')
-rw-r--r-- | files/uk/web/javascript/reference/global_objects/set/index.html | 242 |
1 files changed, 242 insertions, 0 deletions
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 +--- +<div>{{JSRef}}</div> + +<div>Об'єкт <strong>Set</strong> дає можливість зберігати значення будь-якого типу, будь то примітивні значення чи посилання на об'єкт.</div> + +<div>{{EmbedInteractiveExample("pages/js/set-prototype-constructor.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">new Set([<em>iterable</em>]);</pre> + +<h3 id="Параметри">Параметри</h3> + +<dl> + <dt><code>iterable</code></dt> + <dd>Якщо передається<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of"> об'єкт, що ітерується</a>, то всі його елементи будуть додані до нового <code>Set</code>. Якщо цей параметр не визначений або має значення null, тоді новий <code>Set</code> буде порожнім.</dd> +</dl> + +<h3 id="Значення_що_повертається">Значення, що повертається</h3> + +<p>Новий об'єкт <code>Set</code>.</p> + +<h2 id="Опис">Опис</h2> + +<p>Об'єкти <code>Set</code> - це колекції унікальних значень. Ви можете перебирати елементи <code>Set</code> у порядку вставки. Одне значення в <code>Set</code> може зустрічатися лише один раз; воно є унікальним в колекції <code>Set</code>.</p> + +<h3 id="Еквівалентність_значення">Еквівалентність значення</h3> + +<p>Через те, що кожне значення в <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">Set</span></font> має бути унікальним, еквівалентність значення буде перевірена. У попередній версії специфікації ECMAScript це не було базовано на такому самому алгоритмі, що використовує оператор ===. Конкретніше, для <code>Set</code> <code>+0</code> (що є суворо рівним <code>-0</code> ) та <code>-0</code> є різними значеннями. Проте, це було змінено у специфікації ECMAScript 2015. Дивіться більш детально про "Еквівалентність значень -0 і 0" у таблиці <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#Browser_compatibility">браузерної сумісності</a>.</p> + +<p>До того ж, <code>NaN</code> та <code>undefined</code> також можуть зберігатися в <code>Set</code>. <code>NaN</code> вважається тим самим, що і <code>NaN</code> (хоча, <code>NaN !== NaN</code> ).</p> + +<h2 id="Властивості">Властивості</h2> + +<dl> + <dt><code>Set.length</code></dt> + <dd>Значення властивості <code>length</code> є 0.</dd> + <dt>{{jsxref("Set.@@species", "get Set[@@species]")}}</dt> + <dd>Функція-конструктор, що використовується для строрення derived об'єктів.</dd> + <dt>{{jsxref("Set.prototype")}}</dt> + <dd>Представляє прототип для конструктора <code>Set</code>. Дозволяє додавання властивостей до всіх <code>Set</code> об'єктів.</dd> +</dl> + +<h2 id="Set_instances"><code>Set</code> instances</h2> + +<p>Усі <code>Set</code> сутності наслідуються від {{jsxref("Set.prototype")}}.</p> + +<h3 id="Властивості_2">Властивості</h3> + +<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/Set/prototype','Properties')}}</p> + +<h3 id="Методи">Методи</h3> + +<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/Set/prototype','Methods')}}</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Використання_об'єкта_Set">Використання об'єкта <code>Set</code></h3> + +<pre class="brush: js">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}}</pre> + +<h3 id="Перебирання_Set">Перебирання Set</h3> + +<pre class="brush: js">// перебираємо елементи в 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 за допомогою <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from">Array.from</a> +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</pre> + +<h3 id="Імплементація_базових_операцій_set">Імплементація базових операцій set</h3> + +<pre class="brush: js">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] + +</pre> + +<h3 id="Зв'язок_з_об'єктами_Array">Зв'язок з об'єктами <code>Array</code></h3> + +<pre class="brush: js">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</pre> + +<h3 id="Зв'язок_зі_Strings">Зв'язок зі <code>Strings</code></h3> + +<pre class="brush: js">var text = 'India'; + +var mySet = new Set(text); // Set {'I', 'n', 'd', 'i', 'a'} +mySet.size; // 5 +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-set-objects', 'Set')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-set-objects', 'Set')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Set")}}</p> + +<h2 id="Дівіться_також">Дівіться також</h2> + +<ul> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("WeakMap")}}</li> + <li>{{jsxref("WeakSet")}}</li> +</ul> |