From 95aca4b4d8fa62815d4bd412fff1a364f842814a Mon Sep 17 00:00:00 2001 From: Ryan Johnson Date: Thu, 29 Apr 2021 16:16:42 -0700 Subject: remove retired locales (#699) --- .../global_objects/array/@@iterator/index.html | 116 ----- .../global_objects/array/@@species/index.html | 72 --- .../global_objects/array/@@unscopables/index.html | 76 --- .../global_objects/array/array/index.html | 87 ---- .../global_objects/array/concat/index.html | 168 ------ .../global_objects/array/copywithin/index.html | 188 ------- .../global_objects/array/entries/index.html | 96 ---- .../global_objects/array/every/index.html | 195 ------- .../reference/global_objects/array/fill/index.html | 155 ------ .../global_objects/array/filter/index.html | 235 --------- .../reference/global_objects/array/find/index.html | 233 --------- .../global_objects/array/findindex/index.html | 187 ------- .../reference/global_objects/array/flat/index.html | 150 ------ .../global_objects/array/flatmap/index.html | 152 ------ .../global_objects/array/foreach/index.html | 290 ----------- .../reference/global_objects/array/from/index.html | 242 --------- .../global_objects/array/includes/index.html | 135 ----- .../reference/global_objects/array/index.html | 431 --------------- .../global_objects/array/indexof/index.html | 260 --------- .../global_objects/array/isarray/index.html | 131 ----- .../reference/global_objects/array/join/index.html | 114 ---- .../reference/global_objects/array/keys/index.html | 82 --- .../global_objects/array/lastindexof/index.html | 166 ------ .../global_objects/array/length/index.html | 139 ----- .../reference/global_objects/array/map/index.html | 349 ------------- .../reference/global_objects/array/of/index.html | 100 ---- .../reference/global_objects/array/pop/index.html | 118 ----- .../reference/global_objects/array/push/index.html | 136 ----- .../global_objects/array/reduce/index.html | 578 --------------------- .../global_objects/array/reduceright/index.html | 364 ------------- .../global_objects/array/reverse/index.html | 89 ---- .../global_objects/array/shift/index.html | 141 ----- .../global_objects/array/slice/index.html | 242 --------- .../reference/global_objects/array/some/index.html | 206 -------- .../reference/global_objects/array/sort/index.html | 274 ---------- .../global_objects/array/splice/index.html | 162 ------ .../global_objects/array/tolocalestring/index.html | 182 ------- .../global_objects/array/tosource/index.html | 72 --- .../global_objects/array/tostring/index.html | 80 --- .../global_objects/array/unshift/index.html | 123 ----- .../global_objects/array/values/index.html | 93 ---- 41 files changed, 7409 deletions(-) delete mode 100644 files/uk/web/javascript/reference/global_objects/array/@@iterator/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/@@species/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/@@unscopables/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/array/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/concat/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/copywithin/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/entries/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/every/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/fill/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/filter/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/find/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/findindex/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/flat/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/flatmap/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/foreach/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/from/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/includes/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/indexof/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/isarray/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/join/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/keys/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/lastindexof/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/length/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/map/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/of/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/pop/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/push/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/reduce/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/reduceright/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/reverse/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/shift/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/slice/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/some/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/sort/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/splice/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/tolocalestring/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/tosource/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/tostring/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/unshift/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/values/index.html (limited to 'files/uk/web/javascript/reference/global_objects/array') diff --git a/files/uk/web/javascript/reference/global_objects/array/@@iterator/index.html b/files/uk/web/javascript/reference/global_objects/array/@@iterator/index.html deleted file mode 100644 index 3ab9407b4e..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/@@iterator/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: 'Array.prototype[@@iterator]()' -slug: Web/JavaScript/Reference/Global_Objects/Array/@@iterator -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Ітератор - - Масив - - метод - - прототип -translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@iterator ---- -
{{JSRef}}
- -

Початковим значенням властивості @@iterator є та сама функція, яка є початковим значенням властивості {{jsxref("Array.prototype.values()", "values()")}}.

- -

Синтаксис

- -
arr[Symbol.iterator]()
- -

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

- -

Початкове значення, що надається ітератором {{jsxref("Array.prototype.values()", "values()")}}. За замовчуванням, використання arr[Symbol.iterator] поверне функцію {{jsxref("Array.prototype.values()", "values()")}}.

- -

Приклад

- -

Перебір за допомогою циклу for...of

- -
var arr = ['a', 'b', 'c', 'd', 'e'];
-var eArr = arr[Symbol.iterator]();
-// ваш переглядач має підтримувати цикл for..of
-// та змінні, оголошені через let, у циклах for
-// також можна використати const та var
-for (let letter of eArr) {
-  console.log(letter);
-}
-
- -

Альтернативний перебір

- -
var arr = ['а', 'б', 'в', 'г', 'ґ'];
-var eArr = arr[Symbol.iterator]();
-console.log(eArr.next().value); // а
-console.log(eArr.next().value); // б
-console.log(eArr.next().value); // в
-console.log(eArr.next().value); // г
-console.log(eArr.next().value); // ґ
-
- -

Випадок використання позначення через квадратні дужки

- -

Використовувати цей синтаксис замість позначення через крапку (Array.prototype.values()) зручно, коли ви не знаєте заздалегідь, яким буде об'єкт. Якщо ви маєте функцію, що приймає ітератор та перебирає значення, але не знаєте, чи матиме цей об'єкт метод [Iterable].prototype.values. Це може бути вбудований об'єкт, такий як String, або користувацький об'єкт.

- -
function logIterable(it) {
-  var iterator = it[Symbol.iterator]();
-  // ваш переглядач має підтримувати цикл for..of
-  // та змінні, оголошені через let, у циклах for
-  // також можна використати const та var
-  for (let letter of iterator) {
-      console.log(letter);
-  }
-}
-
-// Масив
-logIterable(['а', 'б', 'в']);
-// а
-// б
-// в
-
-// рядок
-logIterable('абв');
-// а
-// б
-// в
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ES2015')}}Початкове визначення.
{{SpecName('ESDraft', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.@@iterator")}}

- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/@@species/index.html b/files/uk/web/javascript/reference/global_objects/array/@@species/index.html deleted file mode 100644 index df18a2a627..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/@@species/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: 'get Array[@@species]' -slug: Web/JavaScript/Reference/Global_Objects/Array/@@species -tags: - - Array - - JavaScript - - Масив - - метод - - прототип -translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@species ---- -
{{JSRef}}
- -

Властивість-аксесор Array[@@species] повертає конструктор Array.

- -

Синтаксис

- -
Array[Symbol.species]
-
- -

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

- -

Конструктор {{jsxref("Array")}}.

- -

Опис

- -

Властивість-аксесор species повертає конструктор за замовчуванням для об'єктів Array. Конструктори підкласів можуть його заміщувати, змінюючи присвоєння конструктора.

- -

Приклади

- -

Species у звичайних об'єктах

- -

Властивість species повертає функцію-конструктор за замовчуванням, для об'єктів Array це конструктор Array:

- -
Array[Symbol.species]; // функція Array()
- -

Species у похідних об'єктах

- -

У похідному об'єкті колекцій (наприклад, у вашому користувацькому масиві MyArray), species для MyArray поверне конструктор MyArray. Однак, ви, можливо, захочете переписати цю поведінку, щоб повертати батьківські об'єкти Array у методах свого похідного класу:

- -
class MyArray extends Array {
-  // Переписати Symbol.species у MyArray на батьківський конструктор Array
-  static get [Symbol.species]() { return Array; }
-}
- -

Специфікації

- - - - - - - - - - -
Специфікація
{{SpecName('ESDraft', '#sec-get-array-@@species', 'get Array [ @@species ]')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.@@species")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/@@unscopables/index.html b/files/uk/web/javascript/reference/global_objects/array/@@unscopables/index.html deleted file mode 100644 index 2ded6c458e..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/@@unscopables/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: 'Array.prototype[@@unscopables]' -slug: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Властивість - - Масив -translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables ---- -
{{JSRef}}
- -

Символьна властивість @@unscopable містить імена властивостей, що не були включені у стандарт ECMAScript до версії ES2015. Ці властивості виключені з прив'язок оператора with.

- -

Опис

- -

Стандартні властивості масивів, що виключені з прив'язок with, наступні:

- - - -

Дивіться {{jsxref("Symbol.unscopables")}}, щоб дізнатись, як задати unscopables для ваших власних об'єктів.

- -

{{js_property_attributes(0,0,1)}}

- -

Приклади

- -

Використання у оточеннях with

- -

Наступний код чудово працює у ES5 та більш ранніх версіях. Однак, у ECMAScript 2015 та пізніших версіях був запроваджений метод {{jsxref("Array.prototype.keys()")}}. Це означає, що всередині середовищ with "keys" тепер буде методом, а не змінною. Саме тут вступає у гру вбудована символьна властивість @@unscopables Array.prototype[@@unscopables], яка не дає деяким методам масивів потрапити у область видимості with.

- -
var keys = [];
-
-with (Array.prototype) {
-  keys.push('something');
-}
-
-Object.keys(Array.prototype[Symbol.unscopables]);
-// ["copyWithin", "entries", "fill", "find", "findIndex",
-//  "includes", "keys", "values"]
- -

Специфікації

- - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}
- -

Підтримка веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.@@unscopables")}}

-
- -

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

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/array/index.html b/files/uk/web/javascript/reference/global_objects/array/array/index.html deleted file mode 100644 index 84bcbb52a0..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/array/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Конструктор Array() -slug: Web/JavaScript/Reference/Global_Objects/Array/Array -tags: - - JavaScript - - Конструктор - - Масив -translation_of: Web/JavaScript/Reference/Global_Objects/Array/Array ---- -
{{JSRef}}
- -

Конструктор Array() використовується для створення об'єктів {{jsxref("Array")}}.

- -

Синтаксис

- -
[element0, element1, ..., elementN]
-
-new Array(element0, element1[, ...[, elementN]])
-new Array(arrayLength)
- -

Параметри

- -
-
elementN
-
Масив JavaScript ініціалізується наданими елементами, окрім випадку, коли у конструктор Array передається єдиний аргумент, і цей аргумент - число (дивіться нижче параметр arrayLength). Зауважте, що цей особливий випадок стосується лише масивів JavaScript, створених конструктором Array, а не масивних літералів, створених дужковим синтаксисом.
-
arrayLength
-
Якщо єдиним аргументом, переданим у конструктор Array є ціле число між 0 та 232-1 (включно), це створює новий масив JavaScript, в якого властивості length присвоюється це число (Заувага: мається на увазі масив довжиною arrayLength з порожних елементів, а не елементів, заповнених значеннями undefined). Якщо аргумент є будь-яким іншим числом, викидається виняток {{jsxref("RangeError")}}.
-
- -

Приклади

- -

Нотація масивного літералу

- -

Масиви можна створювати за допомогою літералів:

- -
let fruits = ['Яблуко', 'Банан'];
-
-console.log(fruits.length); // 2
-console.log(fruits[0]);     // "Яблуко"
-
- -

Конструктор масиву з єдиним параметром

- -

Масиви можна створювати за допомогою конструктора з єдиним числовим параметром. Властивості масиву length присвоюється це число, а всі елементи масиву є порожніми.

- -
let fruits = new Array(2);
-
-console.log(fruits.length); // 2
-console.log(fruits[0]);     // undefined
-
- -

Конструктор масиву з кількома параметрами

- -

Якщо у конструктор передається більше одного параметра, створюється новий об'єкт {{jsxref("Array")}} з наданими елементами.

- -
let fruits = new Array('Яблуко', 'Банан');
-
-console.log(fruits.length); // 2
-console.log(fruits[0]);     // "Яблуко"
-
- -

Специфікації

- - - - - - - - - - - - -
СпецифікаціяСтатус
{{SpecName('ESDraft', '#sec-array-constructor', 'Array constructor')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- - - -

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

- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/concat/index.html b/files/uk/web/javascript/reference/global_objects/array/concat/index.html deleted file mode 100644 index 5b56573f93..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/concat/index.html +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: Array.prototype.concat() -slug: Web/JavaScript/Reference/Global_Objects/Array/concat -tags: - - Array - - JavaScript - - Method - - Prototype - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat ---- -
{{JSRef}}
- -

Метод concat() повертає новий масив, що складається із масиву, в контексті якого метод був викликаний, поєднаного із масивом (масивами) та/або іншими значеннями, що були передані як аргументи.

- - - -

{{EmbedInteractiveExample("pages/js/array-concat.html")}}

- - - - - -

Синтаксис

- -
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
- -

Параметри

- -
-
valueN
-
Масиви та/або значення, які поєднуються в новий масив. Якщо всі параметри valueN пропущені, метод concat повертає дрібну копію існуючого масиву, на якому був викликаний. Додаткову інформацію дивіться нижче в описі.
-
- -

Повернене значення

- -

Новий екземпляр об'єкта {{jsxref("Array")}}.

- -

Опис

- -

Метод concat створює новий масив, який складається із елементів об'єкта, на якому метод був викликаний, а також із елементів кожного аргумента (якщо цей аргумент - масив) або з самого аргумента (якщо він не є масивом). Метод не заходить у аргументи вкладених масивів.

- -

Метод concat не змінює this або будь-який з масивів, що передані як аргументи, але натомість повертає дрібну копію, яка містить копії тих самих елементів, об'єднані з початкових масивів. Елементи початкових масивів копіюються в новий масив таким чином:

- - - -
-

Примітка: об'єднання масиву (масивів) чи значення (значень) не змінить початкові дані. Більше того, будь-яка операція над новим масивом (тільки якщо елемент не є посиланням на об'єкт) не матиме жодного впливу на початкові масиви, і навпаки.

-
- -

Приклади

- -

Об'єднання двох масивів

- -

Наступний код об'єднує два масиви:

- -
const letters = ['a', 'b', 'c'],
-const numeric = [1, 2, 3];
-
-letters.concat(numeric);
-// Результат: ['a', 'b', 'c', 1, 2, 3]
-
- -

Об'єднання трьох масивів

- -

Наступний код об'єднує три масиви:

- -
var num1 = [1, 2, 3],
-    num2 = [4, 5, 6],
-    num3 = [7, 8, 9];
-
-var numbers = num1.concat(num2, num3);
-
-console.log(numbers);
-// Результат: [1, 2, 3, 4, 5, 6, 7, 8, 9]
-
- -

Об'єднання значень у масив

- -

Наступний код об'єднує три значення у масив:

- -
var letters = ['a', 'b', 'c'];
-
-var alphaNumeric = letters.concat(1, [2, 3]);
-
-console.log(alphaNumeric);
-// Результат: ['a', 'b', 'c', 1, 2, 3]
-
- - - -

Об'єднанная вкладених масивів

- -

Наступний код об'єднує вкладені масиви та демонструє утримання посилань:

- -
const num1 = [[1]];
-const num2 = [2, [3]];
-
-const numbers = num1.concat(num2);
-
-console.log(numbers);
-// результат: [[1], 2, [3]]
-
-// змінити перший елемент num1
-num1[0].push(4);
-
-console.log(numbers);
-// результат: [[1, 4], 2, [3]]
- - - -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES3')}}{{Spec2('ES3')}}Початкове визначення. Реалізоване в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.4', 'Array.prototype.concat')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.concat', 'Array.prototype.concat')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.concat', 'Array.prototype.concat')}}{{Spec2('ESDraft')}}
- -

Сумісність із веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.concat")}}

- -
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/copywithin/index.html b/files/uk/web/javascript/reference/global_objects/array/copywithin/index.html deleted file mode 100644 index b2d5e837e2..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/copywithin/index.html +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: Array.prototype.copyWithin() -slug: Web/JavaScript/Reference/Global_Objects/Array/copyWithin -tags: - - ECMAScript 2015 - - JavaScript - - Масив - - метод - - прототип -translation_of: Web/JavaScript/Reference/Global_Objects/Array/copyWithin ---- -
{{JSRef}}
- -

Метод copyWithin() додає дрібну копію частини масиву в іншу позицію в тому ж масиві та повертає його без зміни довжини.

- -
{{EmbedInteractiveExample("pages/js/array-copywithin.html")}}
- - - -

Синтаксис

- -
arr.copyWithin(target[, start[, end]])
-
- -

Параметри

- -
-
target
-
Індекс (нумерується з 0), куди потрібно скопіювати послідовність. Якщо індекс є від'ємним, target буде рахуватися з кінця масиву.
-
Якщо значення target дорівнює або більше за arr.length, нічого не скопіюється. Якщо індекс target більший за start, скопійована послідовність буде обрізана відповідно до arr.length.
-
start {{optional_inline}}
-
Індекс (нумерується з 0), з якого потрібно починати копіювання елементів. Якщо він від'ємний, start буде рахуватися з кінця.
-
Якщо параметр start не заданий, copyWithin буде копіювати, починаючи з індекса 0. 
-
end {{optional_inline}}
-
Індекс (нумерується з 0), на якому потрібно закінчити копіювання елементів. copyWithin копіює до, але не включаючи, end. Якщо індекс від'ємний, end буде рахуватися з кінця.
-
Якщо параметр end не заданий, copyWithin буде копіювати до останнього індекса (за замовченням arr.length).
-
- -

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

- -

Змінений масив.

- -

Опис

- -

Метод copyWithin працює, як memmove у C та C++, і є дуже продуктивним методом для зсунення даних у {{jsxref("Array", "масиві")}}. Це особливо стосується метода {{jsxref("TypedArray/copyWithin", "TypedArray")}} з такою ж самою назвою. Послідовність копіюється та вставляється однією операцією; вставлена послідовність міститиме скопійовані значення, навіть коли ділянки копіювання та вставки накладаються.

- -

Функція copyWithin є навмисно загальною, вона не вимагає, щоб її this був об'єктом {{jsxref("Array")}}.

- -

Метод copyWithin є методом модифікації. Він не змінює довжину об'єкта this, але він змінює його зміст та створює нові властивості в разі необхідності.

- -

Приклади

- -
[1, 2, 3, 4, 5].copyWithin(-2);
-// [1, 2, 3, 1, 2]
-
-[1, 2, 3, 4, 5].copyWithin(0, 3);
-// [4, 5, 3, 4, 5]
-
-[1, 2, 3, 4, 5].copyWithin(0, 3, 4);
-// [4, 2, 3, 4, 5]
-
-[1, 2, 3, 4, 5].copyWithin(-2, -3, -1);
-// [1, 2, 3, 3, 4]
-
-[].copyWithin.call({length: 5, 3: 1}, 0, 3);
-// {0: 1, 3: 1, length: 5}
-
-// ES2015 типізовані масиви є підкласами Array
-var i32a = new Int32Array([1, 2, 3, 4, 5]);
-
-i32a.copyWithin(0, 2);
-// Int32Array [3, 4, 5, 4, 5]
-
-// На платформах, які ще не сумісні з ES2015:
-[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4);
-// Int32Array [4, 2, 3, 4, 5]
-
- -

Поліфіл

- -
if (!Array.prototype.copyWithin) {
-  Object.defineProperty(Array.prototype, 'copyWithin', {
-    value: function(target, start/*, end*/) {
-    // Кроки 1-2.
-    if (this == null) {
-      throw new TypeError('this is null or not defined');
-    }
-
-    var O = Object(this);
-
-    // Кроки 3-5.
-    var len = O.length >>> 0;
-
-    // Кроки 6-8.
-    var relativeTarget = target >> 0;
-
-    var to = relativeTarget < 0 ?
-      Math.max(len + relativeTarget, 0) :
-      Math.min(relativeTarget, len);
-
-    // Кроки 9-11.
-    var relativeStart = start >> 0;
-
-    var from = relativeStart < 0 ?
-      Math.max(len + relativeStart, 0) :
-      Math.min(relativeStart, len);
-
-    // Кроки 12-14.
-    var end = arguments[2];
-    var relativeEnd = end === undefined ? len : end >> 0;
-
-    var final = relativeEnd < 0 ?
-      Math.max(len + relativeEnd, 0) :
-      Math.min(relativeEnd, len);
-
-    // Крок 15.
-    var count = Math.min(final - from, len - to);
-
-    // Кроки 16-17.
-    var direction = 1;
-
-    if (from < to && to < (from + count)) {
-      direction = -1;
-      from += count - 1;
-      to += count - 1;
-    }
-
-    // Крок 18.
-    while (count > 0) {
-      if (from in O) {
-        O[to] = O[from];
-      } else {
-        delete O[to];
-      }
-
-      from += direction;
-      to += direction;
-      count--;
-    }
-
-    // Крок 19.
-    return O;
-  },
-  configurable: true,
-  writable: true
-  });
-}
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-array.prototype.copywithin', 'Array.prototype.copyWithin')}}{{Spec2('ES2015')}}Початкове визначення.
{{SpecName('ES2016', '#sec-array.prototype.copywithin', 'Array.prototype.copyWithin')}}{{Spec2('ES2016')}}
{{SpecName('ESDraft', '#sec-array.prototype.copywithin', 'Array.prototype.copyWithin')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.copyWithin")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/entries/index.html b/files/uk/web/javascript/reference/global_objects/array/entries/index.html deleted file mode 100644 index b55d83c2e5..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/entries/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Array.prototype.entries() -slug: Web/JavaScript/Reference/Global_Objects/Array/entries -tags: - - Array - - ECMAScript6 - - JavaScript - - Ітератор - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/entries ---- -
{{JSRef}}
- -

Метод entries() повертає новий об'єкт ітератора масиву (Array Iterator), який містить пари ключ-значення для кожного індексу в масиві.

- -
{{EmbedInteractiveExample("pages/js/array-entries.html")}}
- - - -

Синтаксис

- -
array.entries()
- -

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

- -

Новий об'єкт ітератора {{jsxref("Array", "масиву")}}.

- -

Приклади

- -

Ітерування за індексом та елементом

- -
const a = ['a', 'b', 'c'];
-
-for (const [index, element] of a.entries())
-  console.log(index, element);
-
-// 0 'a'
-// 1 'b'
-// 2 'c'
-
- -

Використання циклу for…of

- -
var a = ['a', 'b', 'c'];
-var iterator = a.entries();
-
-for (let e of iterator) {
-  console.log(e);
-}
-// [0, 'a']
-// [1, 'b']
-// [2, 'c']
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ES2015')}}Початкове визначення.
{{SpecName('ESDraft', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.entries")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/every/index.html b/files/uk/web/javascript/reference/global_objects/array/every/index.html deleted file mode 100644 index 4eb5b229f0..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/every/index.html +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: Array.prototype.every() -slug: Web/JavaScript/Reference/Global_Objects/Array/every -tags: - - Array - - ECMAScript6 - - JavaScript - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/every ---- -
{{JSRef}}
- -

Метод every() перевіряє, чи всі елементи масиву відповідають умові, що задана функцією, яка передається як аргумент. Повертає булеве значення.

- -
function isBigEnough(element, index, array) {
-  return element >= 10;
-}
-
-[12, 5, 8, 130, 44].every(isBigEnough);   // false
-[12, 54, 18, 130, 44].every(isBigEnough); // true
- -

Синтаксис

- -
arr.every(callback(element[, index[, array]])[, thisArg])
- -

Параметри

- -
-
callback
-
Функція, яка перевіряє кожен елемент масиву. Приймає три аргументи: -
-
element
-
Поточний елемент, який обробляється в масиві.
-
index {{Optional_inline}}
-
Індекс поточного елемента, який обробляється в масиві.
-
array {{Optional_inline}}
-
Масив для якого був викликаний метод every.
-
-
-
thisArg{{Optional_inline}}
-
Значення, що використовується як this при виконанні callback.
-
- -

Вертає

- -

true, якщо функція callback повернула {{Glossary("truthy", "правдиве")}} значення для кожного елементу масиву; інакше, false.

- -

Опис

- -

Метод every виконує функцію callback один раз для кожного елементу масиву поки не знайдено хоча б один елемент, функція callback якого повертає {{Glossary("falsy", "хибне")}} значення. Якщо такий елемент знайдено, метод every одразу повертає false. В іншому ж випадку, якщо функція callback повернула {{Glossary("truthy", "правдиве")}} значення для усіх елементів, every повертає true.  Функція callback викликається тільки для тих індексів масиву, які мають присвоєні значення; вона не викликається для тих індексів, котрі були видалені або котрим ніколи не присвоювалися значення.

- -

Функція callback викликається з трьома аргументами: значення елементу, індекс елементу в масиві і масив по якому робиться перебір.

- -

Якщо параметр thisArg переданий в every, то він буде використовуватися функцією callback як значення this, коли та буде викликана. В іншому випадку буде передано значення undefined як її значення this. Значення this зрештою видиме для функції callback і визначається відповідно до звичайних правил для визначення this яке видиме функцією.

- -

Метод every не змінює масив, на якому він був викликаний.

- -

Діапазон елементів, які обробляються методом every() встановлюється перед першим виконанням функції callback. Елементи, які додаються в масив після того, як метод every()був викликаний, не будуть обходитися функцією callback. Якщо існуючі елементи масиву змінилися, то їхні значення, які передаються в функцію callback будуть значеннями на момент обходу їх методом every(); якщо існуючі елементи масиву видалили, то метод every() обходити їх не буде.

- -

Метод every схожий за дією на математичний символ "для кожного \forall \!\,". Зокрема, для порожнього масиву він повертає true. (Всі елементи порожнього набору задовольняють будь-якому заданому стану.)

- -

Приклади

- -

Перевірка значення кожного елементу масиву

- -

Даний приклад перевіряє чи всі елементи масиву більші ніж 10.

- -
function isBigEnough(element, index, array) {
-  return element >= 10;
-}
-[12, 5, 8, 130, 44].every(isBigEnough);   // false
-[12, 54, 18, 130, 44].every(isBigEnough); // true
-
- -

Викристання стрілочних функцій

- -

Стрілочні функції надають коротший синтаксис для такої ж самої перевірки.

- -
[12, 5, 8, 130, 44].every(x => x >= 10); // false
-[12, 54, 18, 130, 44].every(x => x >= 10); // true
- -

Поліфіл

- -

Метод every був доданий до ECMA-262 стандарту у 5-ій версії; як такий він може бути не реалізований в усіх реалізаціях стандарту. Ви можете обійти цю проблему, вставивши наступний код на початку ваших скриптів, що дозволить використовувати метод every у тих версіях, які не підтримують його початково. Цей алгоритм є саме тим, що зазначений у  ECMA-262, 5-ій версії, за умови, що Object і TypeError мають свої первинні значення і що callbackfn.call прирівнюється до первинного значення {{jsxref("Function.prototype.call")}}

- -
if (!Array.prototype.every) {
-  Array.prototype.every = function(callbackfn, thisArg) {
-    'use strict';
-    var T, k;
-
-    if (this == null) {
-      throw new TypeError('this дорівнює null або не визначений');
-    }
-
-    // 1. Нехай O буде результатом виклику ToObject з передачею значення
-    //    this в якості аргумента.
-    var O = Object(this);
-
-    // 2. Нехай lenValue буде результатом виклику внутрішнього метода O
-    //    Get з аргументом "length".
-    // 3. Нехай len буде результатом ToUint32(lenValue).
-    var len = O.length >>> 0;
-
-    // 4. Якщо IsCallable(callbackfn) повертає false, викинути виняток TypeError.
-    if (typeof callbackfn !== 'function') {
-      throw new TypeError();
-    }
-
-    // 5. Якщо thisArg було передано, хай T буде thisArg; інакше хай T буде undefined.
-    if (arguments.length > 1) {
-      T = thisArg;
-    }
-
-    // 6. Нехай k дорівнює 0.
-    k = 0;
-
-    // 7. Повторювати, доки k < len
-    while (k < len) {
-
-      var kValue;
-
-      // а. Нехай Pk буде ToString(k).
-      //   Це неявно для операндів LHS оператора in
-      // б. Нехай kPresent буде результатом виклику внутрішнього метода
-      //    O HasProperty з аргументом Pk.
-      //    Цей крок можна поєднати з в
-      // в. Якщо kPresent дорівнює true, тоді
-      if (k in O) {
-
-        // i. Нехай kValue буде результатом виклику внутрішнього метода
-        //    O Get з аргументом Pk.
-        kValue = O[k];
-
-        // ii. Нехай testResult буде результатом виклику внутрішнього метода
-        //      callbackfn Call з T в якості значення this і списком аргументів,
-        //      який містить kValue, k, та O.
-        var testResult = callbackfn.call(T, kValue, k, O);
-
-        // iii. Якщо ToBoolean(testResult) дорівнює false, повернути false.
-        if (!testResult) {
-          return false;
-        }
-      }
-      k++;
-    }
-    return true;
-  };
-}
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}}{{Spec2('ES5.1')}}Початкове визначення. Реалізовано у JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.every")}}

- -
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/fill/index.html b/files/uk/web/javascript/reference/global_objects/array/fill/index.html deleted file mode 100644 index 666360dc76..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/fill/index.html +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: Array.prototype.fill() -slug: Web/JavaScript/Reference/Global_Objects/Array/fill -tags: - - Array - - ECMAScript6 - - JavaScript - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/fill ---- -
{{JSRef}}
- -

Метод fill() заповнює (змінює) всі елементи масиву з початкового індексу (за замовчуванням нуль) до кінцевого індексу (за замовчуванням довжина масиву) статичним значенням. Метод повертає змінений масив.

- -
{{EmbedInteractiveExample("pages/js/array-fill.html")}}
- - - -

Синтаксис

- -
arr.fill(value[, start[, end]])
-
- -

Параметри

- -
-
value
-
Величина, якою потрібно заповнити масив.
-
start {{optional_inline}}
-
Початковий індекс, за замовчуванням 0.
-
end {{optional_inline}}
-
Кінцевий індекс, за замовчуванням this.length.
-
- -

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

- -

Змінений масив.

- -

Опис

- -

Метод fill приймає три аргументи: value, start та end. Аргументи start та end є необов'язковими й за замовчуванням дорівнюють 0 та значенню length об'єкта this.

- -

Якщо значення start є від'ємним, воно сприймається як length+start, де length - це довжина масиву. Якщо значення end є від'ємним, воно сприймається як length+end.

- -

Метод fill є навмисно загальним, він не вимагає, щоб значенням this був об'єкт Array.

- -

fill є методом модифікації, він змінить сам об'єкт this та поверне його, а не просто його копію.

- -

Коли у fill передається об'єкт, він копіює посилання та заповнює масив посиланнями на цей об'єкт.

- -

Приклади

- -
[1, 2, 3].fill(4);               // [4, 4, 4]
-[1, 2, 3].fill(4, 1);            // [1, 4, 4]
-[1, 2, 3].fill(4, 1, 2);         // [1, 4, 3]
-[1, 2, 3].fill(4, 1, 1);         // [1, 2, 3]
-[1, 2, 3].fill(4, 3, 3);         // [1, 2, 3]
-[1, 2, 3].fill(4, -3, -2);       // [4, 2, 3]
-[1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3]
-[1, 2, 3].fill(4, 3, 5);         // [1, 2, 3]
-Array(3).fill(4);                // [4, 4, 4]
-[].fill.call({ length: 3 }, 4);  // {0: 4, 1: 4, 2: 4, length: 3}
-
-// Об'єкти за посиланнями.
-var arr = Array(3).fill({}) // [{}, {}, {}];
-arr[0].hi = "привіт"; // [{ hi: "привіт" }, { hi: "привіт" }, { hi: "привіт" }]
-
- -

Поліфіл

- -
if (!Array.prototype.fill) {
-  Object.defineProperty(Array.prototype, 'fill', {
-    value: function(value) {
-
-      // Кроки 1-2.
-      if (this == null) {
-        throw new TypeError('this is null or not defined');
-      }
-
-      var O = Object(this);
-
-      // Кроки 3-5.
-      var len = O.length >>> 0;
-
-      // Кроки 6-7.
-      var start = arguments[1];
-      var relativeStart = start >> 0;
-
-      // Крок 8.
-      var k = relativeStart < 0 ?
-        Math.max(len + relativeStart, 0) :
-        Math.min(relativeStart, len);
-
-      // Кроки 9-10.
-      var end = arguments[2];
-      var relativeEnd = end === undefined ?
-        len : end >> 0;
-
-      // Крок 11.
-      var final = relativeEnd < 0 ?
-        Math.max(len + relativeEnd, 0) :
-        Math.min(relativeEnd, len);
-
-      // Крок 12.
-      while (k < final) {
-        O[k] = value;
-        k++;
-      }
-
-      // Крок 13.
-      return O;
-    }
-  });
-}
-
- -

Якщо вам потрібно підтримувати зовсім застарілі рушії JavaScript, які не підтримують Object.defineProperty, краще взагалі не використовувати поліфіли методів Array.prototype, оскільки ви не зможете зробити їх не перелічуваними.

- -

Специфікації

- - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ES2015')}}Початкове визначення.
{{SpecName('ESDraft', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.fill")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/filter/index.html b/files/uk/web/javascript/reference/global_objects/array/filter/index.html deleted file mode 100644 index e36b7abc4d..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/filter/index.html +++ /dev/null @@ -1,235 +0,0 @@ ---- -title: Array.prototype.filter() -slug: Web/JavaScript/Reference/Global_Objects/Array/filter -tags: - - Array - - ECMAScript5 - - JavaScript - - Prototype - - polyfill - - Довідка - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/filter ---- -
{{JSRef}}
- -

Метод filter() створює новий масив з усіма елементами, що пройшли перевірку вказаною функцією.

- -
{{EmbedInteractiveExample("pages/js/array-filter.html")}}
- - - -

Синтаксис

- -
var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
- -

Параметри

- -
-
callback
-
Функція-присудок, що перевіряє кожен елемент масиву та повертає true, щоб зберегти елемент, або false, щоб видалити. Приймає три аргументи:
-
-
-
element
-
Значення чергового елемента масиву.
-
index{{optional_inline}}
-
Індекс чергового елемента в масиві.
-
array{{optional_inline}}
-
Масив, до якого застосовано filter().
-
-
-
thisArg{{optional_inline}}
-
Значення, що використовується як this, коли викликається callback.
-
- -

Вертає

- -

Новий масив з елементами, що пройшли пере́вірку. Якщо жоден елемент не пройшов перевірку, повертає порожній масив.

- -

Опис

- -

Метод filter() перебирає всі елементи масиву за зростанням індексу, викликає для кожного функцію callback, та створює новий масив зі значень, для яких виклик callback повертає {{glossary("Truthy", "істинне значення")}}. Метод оминає властивості, які було видалено або не було започатковано — в розріджених масивах.

- -

Функція callback викликається з трьома аргументами:

- - - -

Якщо для filter() вказано параметр thisArg, його буде використано як this для функції callback. Інакше буде використано значення {{jsxref("undefined")}}. Зрештою, значення this для функції callback визначатиметься відповідно до загальних правил.

- -

Метод filter() не змінює масив, на якому його викликано.

- -

Множина індексів елементів, що їх перебиратиме filter(), з'ясовується ще до першого виклику callback. Елементи, додані після здійснення виклику filter(), буде знехтувано. Якщо наявні елементи масиву було змінено або видалено, до функції callback потрапить те значення елемента, яке він мав безпосередньо перед відповідним викликом callback. Видалені елементи опрацьовано не буде.

- -

Приклади

- -

Вилучення замалих чисел

- -

Наведений приклад за допомогою метода filter() створює новий масив, що міститиме лише числа, які перевищують 10:

- -
function isBigEnough(value) {
-  return value >= 10;
-}
-
-var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
-// filtered дорівнює [12, 130, 44]
-
- -

Фільтрування неправильних записів з JSON

- -

Цей приклад використовує метод filter(), щоб створити відфільтрований JSON з усіх елементів, які мають ненульове, числове значення id:

- -
var arr = [
-  { id: 15 },
-  { id: -1 },
-  { id: 0 },
-  { id: 3 },
-  { id: 12.2 },
-  { },
-  { id: null },
-  { id: NaN },
-  { id: 'undefined' }
-];
-
-var invalidEntries = 0;
-
-function isNumber(obj) {
-  return obj !== undefined && typeof(obj) === 'number' && !isNaN(obj);
-}
-
-function filterByID(item) {
-  if (isNumber(item.id) && item.id !== 0) {
-    return true;
-  }
-  invalidEntries++;
-  return false;
-}
-
-var arrByID = arr.filter(filterByID);
-
-console.log('Відфільтрований масив\n', arrByID);
-// Відфільтрований масив
-// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
-
-console.log('Кількість неправильних записів = ', invalidEntries);
-// Кількість неправильних записів = 5
- -

Пошук у масиві

- -

Цей приклад використовує filter(), щоб відфільтрувати масив за пошуковим критерієм:

- -
var fruits = ['яблуко', 'банан', 'виноград', 'манго', 'кокос'];
-
-/**
- * Фільтрувати елементи масиву за пошуковим критерієм (запитом)
- */
-function filterItems(arr, query) {
-  return arr.filter(function(el) {
-      return el.toLowerCase().indexOf(query.toLowerCase()) !== -1;
-  })
-}
-
-console.log(filterItems(fruits, 'ко'));  // ['яблуко', 'кокос']
-console.log(filterItems(fruits, 'ан'));  // ['банан', 'манго']
- -

Реалізація ES2015

- -
const fruits = ['яблуко', 'банан', 'виноград', 'манго', 'кокос'];
-
-/**
-* Фільтрувати елементи масиву за пошуковим критерієм (запитом)
-*/
-const filterItems = (arr, query) => {
-  return arr.filter(el => el.toLowerCase().indexOf(query.toLowerCase()) !== -1);
-};
-
-console.log(filterItems(fruits, 'ко')); // ['яблуко', 'кокос']
-console.log(filterItems(fruits, 'ан')); // ['банан', 'манго']
- -

Запасний варіант (поліфіл)

- -

Метод filter() був доданий до стандарту ECMA-262 у 5-й версії; таким чином, він може не бути присутній у всіх реалізаціях стандарту. Ви можете обійти цю проблему, вставивши наведений нижче код на початку ваших скриптів, це дозволить використовувати filter() у версіях ECMA-262, які не підтримують його початково. Цей алгоритм є точним еквівалентом впровадженого у 5-й версії ECMA-262, за умови, що fn.call відповідає початковому значенню {{jsxref("Function.prototype.bind()")}}, і {{jsxref("Array.prototype.push()")}} не було змінено.

- -
if (!Array.prototype.filter) {
-    Array.prototype.filter = function(func, thisArg) {
-        'use strict';
-        if (!((typeof func === 'Function' || typeof func === 'function') && this) )
-            throw new TypeError();
-
-        var len = this.length >>> 0,
-            res = new Array(len),  // попередньо створений масив
-            t = this, c = 0, i = -1;
-
-        var kValue;
-        if (thisArg === undefined){
-          while (++i !== len){
-            // перевіряє, чи заданий ключ
-            if (i in this){
-              kValue = t[i]; // у цьому випадку t змінюється у функції callback
-              if (func(t[i], i, t)){
-                res[c++] = kValue;
-              }
-            }
-          }
-        }
-        else {
-          while (++i !== len) {
-            // перевіряє, чи заданий ключ
-            if (i in this){
-              kValue = t[i];
-              if (func.call(thisArg, t[i], i, t)){
-                res[c++] = kValue;
-              }
-            }
-          }
-        }
-
-        res.length = c; // зменшити масив до правильного розміру
-        return res;
-    };
-}
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES5.1', '#sec-15.4.4.20', 'Array.prototype.filter')}}{{Spec2('ES5.1')}}Початкова виознака. Запроваджено у JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ESDraft')}}
- -

Підтримка веб-переглядачами

- - - -
{{Compat("javascript.builtins.Array.filter")}}
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/find/index.html b/files/uk/web/javascript/reference/global_objects/array/find/index.html deleted file mode 100644 index a08566da73..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/find/index.html +++ /dev/null @@ -1,233 +0,0 @@ ---- -title: Array.prototype.find() -slug: Web/JavaScript/Reference/Global_Objects/Array/find -tags: - - Array - - JavaScript - - Method - - Prototype - - polyfill - - Довідка -translation_of: Web/JavaScript/Reference/Global_Objects/Array/find ---- -
{{JSRef}}
- -

Метод find() повертає значення першого елемента в масиві, що задовільняє передану функцію тестування. Інакше вертається {{jsxref("undefined")}}.

- -

{{EmbedInteractiveExample("pages/js/array-find.html")}}

- - - -

Зверніть увагу також на метод {{jsxref("Array.prototype.findIndex", "findIndex()")}}, що натомість повертає індекс знайденого елемента масиву, а не значення.

- -

Якщо вам необхідно знайти позицію елемента або дізнатись, чи існує елемент в масиві, використовуйте {{jsxref("Array.prototype.indexOf()")}} або {{jsxref("Array.prototype.includes()")}}.

- -

Синтаксис

- -
arr.find(callback(element[, index[, array]])[, thisArg])
- -

Параметри

- -
-
callback
-
Функція, що виконується для кожного значення в масиві і приймає три аргументи: -
-
element
-
Значення поточного елемента масиву.
-
index{{optional_inline}}
-
Індекс поточного елемента масиву.
-
array{{optional_inline}}
-
Масив, для якого було викликано find.
-
-
-
thisArg {{Optional_inline}}
-
Необов'язковий об'єкт, що використовується в якості this при виконанні callback.
-
- -

Вертає

- -

Значення першого елемента в масиві, який задовольняє надану перевірочну функцію. Інакше повертається {{jsxref("undefined")}}.

- -

Опис

- -

Метод find виконує функцію callback один раз для кожного елемента в масиві, аж поки не буде знайдено такий, для якого callback повертає правдиве значення. Щойно такий елемент знайдено, find одразу ж повертає значення цього елемента. В іншому випадку, find  повертає {{jsxref("undefined")}}. Функція callback викликається для кожного індексу масиву з 0 по length - 1 і виконується для усіх елементів, не лише для тих, які мають присвоєні значення. Це означає, що цей метод може бути менш ефективним для розріджених масивів у порівнянні з методами, які обробляють лише ті, елементи, яким присвоєні значення.

- -

Функція callback викликається з трьома аргументами: значення елемента, індекс елемента і об'єкт Array, перебір якого здійснюється.

- -

Якщо параметр thisArg передано до find, його буде використано як this для кожного виклику callback. Якщо його не передано, тоді використовуватиметься {{jsxref("undefined")}}.

- -

Метод find() не змінює масив, для якого викликається.

- -

Діапазон елементів, що їх має обробити find, визначається ще до першого виклику функції callback. Тому callback не обробляє елементи, додані до масиву після того, як почалося виконання find. Якщо існуючий, ще не опрацьований елемент масиву, змінюється функцією callback, його значення, що передається до callback, буде значенням на той момент, коли find доходить до індексу цього елемента. Видалені елементи все одно опрацьовуються.

- -

Приклади

- -

Знайти об'єкт в масиві за однією з його властивостей

- -
var inventory = [
-    {name: 'яблука', quantity: 2},
-    {name: 'банани', quantity: 0},
-    {name: 'вишні', quantity: 5}
-];
-
-function findCherries(fruit) {
-    return fruit.name === 'вишні';
-}
-
-console.log(inventory.find(findCherries));
-// виводить { name: 'вишні', quantity: 5 }
-
- -

Використання стрілочної функції ES2015

- -
const inventory = [
-    {name: 'яблука', quantity: 2},
-    {name: 'банани', quantity: 0},
-    {name: 'вишні', quantity: 5}
-];
-
-const result = inventory.find( fruit => fruit.name === 'вишні' );
-
-console.log(result) // { name: 'вишні', quantity: 5 }
-
- -

Знайти просте число у масиві

- -

Наступний приклад знаходить елемент у масиві, який є простим числом (або повертає {{jsxref("undefined")}}, якщо простого числа немає):

- -
function isPrime(element, index, array) {
-  var start = 2;
-  while (start <= Math.sqrt(element)) {
-    if (element % start++ < 1) {
-      return false;
-    }
-  }
-  return element > 1;
-}
-
-[4, 6, 8, 12].find(isPrime);  // вертає undefined, простих чисел не знайдено
-[4, 5, 8, 12].find(isPrime);  // вертає 5
-
- -

Наступні приклади демонструють, що неіснуючі та видалені елементи теж опрацьовуються, і що значення, передане до функції зворотного виклику - це їхнє значення на момент перевірки.

- -
// Створити масив без елементів за індексами 2, 3 та 4
-const array = [0,1,,,,5,6];
-
-// Виводить всі індекси, не лише ті, які мають присвоєні значення
-array.find(function(value, index) {
-  console.log('Індекс ' + index + ' має значення ' + value);
-});
-
-// Виводить всі індекси, в тому числі видалені
-array.find(function(value, index) {
-
-  // Видалити елемент 5 в першій ітерації
-  if (index == 0) {
-    console.log('Видалення елемента array[5] зі значенням ' + array[5]);
-    delete array[5];
-  }
-  // Елемент 5 перевіряється, хоч і був видалений
-  console.log('Індекс ' + index + ' має значення ' + value);
-});
-// очікуваний результат:
-// Видалення елемента array[5] зі значенням 5
-// Індекс 0 має значення 0
-// Індекс 1 має значення 1
-// Індекс 2 має значення undefined
-// Індекс 3 має значення undefined
-// Індекс 4 має значення undefined
-// Індекс 5 має значення undefined
-// Індекс 6 має значення 6
-
- -

Запасний варіант (поліфіл)

- -

Цей метод був доданий у ECMAScript 2015, тож, можливо, поки наявний не у всякій реалізації JavaScript. Проте, ви можете використати наступний код для забезпечення запасного варіанту Array.prototype.find:

- -
// https://tc39.github.io/ecma262/#sec-array.prototype.find
-if (!Array.prototype.find) {
-  Object.defineProperty(Array.prototype, 'find', {
-    value: function(predicate) {
-     // 1. Нехай O дорівнює ? ToObject(this value).
-      if (this == null) {
-        throw new TypeError('"this" is null or not defined');
-      }
-
-      var o = Object(this);
-
-      // 2. Нехай len дорівнює ? ToLength(? Get(O, "length")).
-      var len = o.length >>> 0;
-
-      // 3. Якщо IsCallable(predicate) дорівнює false, викинути виняток TypeError.
-      if (typeof predicate !== 'function') {
-        throw new TypeError('предикат має бути функцією');
-      }
-
-      // 4. Якщо надано thisArg, нехай T дорівнює thisArg; інакше нехай T дорівнює undefined.
-      var thisArg = arguments[1];
-
-      // 5. Нехай k дорівнює 0.
-      var k = 0;
-
-      // 6. Повторювати, поки k < len
-      while (k < len) {
-        // a. Нехай Pk дорівнює ! ToString(k).
-        // b. Нехай kValue дорівнює ? Get(O, Pk).
-        // c. Нехай testResult дорівнює ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-        // d. Якщо testResult дорівнює true, повернути kValue.
-        var kValue = o[k];
-        if (predicate.call(thisArg, kValue, k, o)) {
-          return kValue;
-        }
-        // e. Збільшити k на 1.
-        k++;
-      }
-
-      // 7. Повернути undefined.
-      return undefined;
-    }
-  });
-}
-
- -

Якщо вам потрібно забезпечити підтримку вкрай застарілих рушіїв JavaScript, в яких відсутня підтримка Object.defineProperty, було б краще взагалі не додавати методів до Array.prototype через відсутність можливості заборонити їх перебір.

- -

Специфікації

- - - - - - - - - - - - - - - - - - - -
СпецифікаціїСтатусКоментар
{{SpecName('ES2015', '#sec-array.prototype.find', 'Array.prototype.find')}}{{Spec2('ES2015')}}Первинне визначення.
{{SpecName('ESDraft', '#sec-array.prototype.find', 'Array.prototype.find')}}{{Spec2('ESDraft')}}
- -

Підтримка веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.find")}}

- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/findindex/index.html b/files/uk/web/javascript/reference/global_objects/array/findindex/index.html deleted file mode 100644 index 550a072e19..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/findindex/index.html +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: Array.prototype.findIndex() -slug: Web/JavaScript/Reference/Global_Objects/Array/findIndex -tags: - - Array - - ECMAScript6 - - JavaScript - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex ---- -
{{JSRef}}
- -

Метод findIndex() повертає індекс першого елемента у масиві, який задовольняє надану перевірочну функцію. Інакше повертаєтсья -1, зазначаючи, що жодний елемент не пройшов перевірку.

- -
{{EmbedInteractiveExample("pages/js/array-findindex.html")}}
- - - -

Дивіться також метод {{jsxref("Array.find", "find()")}}, який повертає значення елемента масиву замість індексу.

- -

Синтаксис

- -
arr.findIndex(callback(element[, index[, array]])[, thisArg])
- -

Параметри

- -
-
callback
-
Функція, яка виконується на кожному значенні масиву, поки не поверне true, зазначаючи, що відповідний елемент знайдений. Вона приймає три аргументи: -
-
element
-
Поточний елемент масиву, який обробляється.
-
index{{optional_inline}}
-
Індекс поточного елементу, що обробляється.
-
array{{optional_inline}}
-
Масив, для якого був викликаний метод findIndex.
-
-
-
thisArg{{optional_inline}}
-
Необов'язковий об'єкт для використання у якості this під час виконання callback.
-
- -

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

- -

Індекс першого елемента у масиві, який успішно пройшов перевірку. Інакше -1.

- -

Опис

- -

Метод findIndex виконує функцію callback один раз для кожного індексу 0..length-1 (включно) у масиві, поки не знайде той, для якого callback поверне правдиве значення (таке, що приводиться до true).

- -

Якщо такий елемент знайдено, findIndex негайно повертає його індекс. Якщо функція зворотного виклику так і не повертає правдиве значення (або довжина масиву length дорівнює 0), findIndex повертає -1. На відміну від інших методів масивів, таких як {{jsxref("Array.some")}}, callback викликається навіть для індексів, що не мають значень.

- -

callback викликається з трьома аргументами:

- -
    -
  1. Значення елемента
  2. -
  3. Індекс елемента
  4. -
  5. Об'єкт Array, який перебирається
  6. -
- -

Якщо параметр thisArg передається до findIndex, він буде використаний у якості this всередині кожного виклику callback. Якщо він не наданий, то використовується {{jsxref("undefined")}}.

- -

Діапазон елементів, які опрацьовує findIndex, встановлюється до першого виклику callback. callback не обробляє елементи, додані до масиву після того, як почалося виконання findIndex. Якщо існуючий, ще не опрацьований елемент масиву змінюється функцією callback, його значення, що передається до callback буде значенням на той момент, коли findIndex доходить до індексу цього елементу. Видалені елементи все одно опрацьовуються.

- -

Приклади

- -

Знайти індекс простого числа у масиві

- -

Наступний приклад повертає індекс першого елементу у масиві, який є простим числом, або -1, якщо там нема жодного простого числа.

- -
function isPrime(element, index, array) {
-  var start = 2;
-  while (start <= Math.sqrt(element)) {
-    if (element % start < 1) {
-      return false;
-    } else {
-      start++;
-    }
-  }
-  return element > 2;
-}
-
-console.log([4, 6, 8, 12].findIndex(isPrime)); // -1, не знайдено
-console.log([4, 6, 7, 12].findIndex(isPrime)); // 2 (array[2] дорівнює 7)
-
- -

Знайти індекс, використувуючи стрілочну функцію

- -

Наступний приклад знаходить індекс фрукта, використувуючи стрілочну функцію:

- -
const fruits = ["яблуко", "банан", "диня", "чорниці", "грейпфрут"];
-
-const index = fruits.findIndex(fruit => fruit === "чорниці");
-
-console.log(index); // 3
-console.log(fruits[index]); // чорниці
-
- -

Поліфіл

- -
// https://tc39.github.io/ecma262/#sec-array.prototype.findindex
-if (!Array.prototype.findIndex) {
-  Object.defineProperty(Array.prototype, 'findIndex', {
-    value: function(predicate) {
-     // 1. Нехай O дорівнює ? ToObject(this value).
-      if (this == null) {
-        throw new TypeError('"this" is null or not defined');
-      }
-
-      var o = Object(this);
-
-      // 2. Нехай len дорівнює ? ToLength(? Get(O, "length")).
-      var len = o.length >>> 0;
-
-      // 3. Якщо IsCallable(predicate) дорівнює false, викинути виняток TypeError.
-      if (typeof predicate !== 'function') {
-        throw new TypeError('предикат має бути функцією');
-      }
-
-      // 4. Якщо наданий thisArg, нехай T дорівнює thisArg; інакше нехай T дорівнює undefined.
-      var thisArg = arguments[1];
-
-      // 5. Нехай k дорівнює 0.
-      var k = 0;
-
-      // 6. Повторювати, поки k < len
-      while (k < len) {
-        // a. Нехай Pk дорівнює ! ToString(k).
-        // b. Нехай kValue дорівнює ? Get(O, Pk).
-        // c. Нехай testResult дорівнює ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-        // d. Якщо testResult дорівнює true, повернути k.
-        var kValue = o[k];
-        if (predicate.call(thisArg, kValue, k, o)) {
-          return k;
-        }
-        // e. Збільшити k на 1.
-        k++;
-      }
-
-      // 7. Повернути -1.
-      return -1;
-    },
-    configurable: true,
-    writable: true
-  });
-}
-
- -

Якщо вам потрібно підтримувати зовсім застарілі рушії JavaScript, які не підтримують Object.defineProperty, краще взагалі не використовувати поліфіли методів Array.prototype, оскільки ви не зможете зробити їх не перелічуваними.

- -

Специфікації

- - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-array.prototype.findindex', 'Array.prototype.findIndex')}}{{Spec2('ES2015')}}Початкове визначення.
{{SpecName('ESDraft', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.findIndex")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/flat/index.html b/files/uk/web/javascript/reference/global_objects/array/flat/index.html deleted file mode 100644 index ff20a8d058..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/flat/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: Array.prototype.flat() -slug: Web/JavaScript/Reference/Global_Objects/Array/flat -tags: - - Array - - JavaScript - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/flat ---- -
{{JSRef}}
- -

Метод flat() створює новий масив який містить всі елементи вкладених масивів до вказаної глибини.

- - - - - -

Синтакс

- -
var newArray = arr.flat([depth]);
- -

Параметри

- -
-
depth {{optional_inline}}
-
Глибина, що вказує до якого рівня вкладеності масивів має відбуватись вирівнювання. За замовчуванням 1.
-
- -

Вихідне значення

- -

Новий масив, що містить елементи вкладених масивів.

- -

Приклади

- -

Вирівнювання вкладених масивів

- -
var arr1 = [1, 2, [3, 4]];
-arr1.flat();
-// [1, 2, 3, 4]
-
-var arr2 = [1, 2, [3, 4, [5, 6]]];
-arr2.flat();
-// [1, 2, 3, 4, [5, 6]]
-
-var arr3 = [1, 2, [3, 4, [5, 6]]];
-arr3.flat(2);
-// [1, 2, 3, 4, 5, 6]
-
- -

Вирівнювання і прогалини в масиві

- -

Метод flat видаляє порожні елементи масивів:

- -
var arr4 = [1, 2, , 4, 5];
-arr4.flat();
-// [1, 2, 4, 5]
-
- -

Альтернатива

- -

reduce і concat

- -
var arr1 = [1, 2, [3, 4]];
-arr1.flat();
-
-//вирівняти один рівень масиву
-arr1.reduce((acc, val) => acc.concat(val), []); // [1, 2, 3, 4]
-
-//або
-const flatSingle = arr => [].concat(...arr);
- -
//щоб здійснити глибоке вирівнювання, використовуйте рекурсію з reduce і concat
-var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]];
-
-function flattenDeep(arr1) {
-   return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);
-}
-flattenDeep(arr1); // [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
-
- -
//глибоке вирівнювання без рекурсії, використовуючи stack
-var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]];
-function flatten(input) {
-  const stack = [...input];
-  const res = [];
-  while (stack.length) {
-    // викидаємо значення зі стеку
-    const next = stack.pop();
-    if (Array.isArray(next)) {
-      // додаємо елементи масиву, не змінюючи вхідного масиву
-      stack.push(...next);
-    } else {
-      res.push(next);
-    }
-  }
-  //перевертаємо масив, щоб порядок сортування відповідав вхідному
-  return res.reverse();
-}
-flatten(arr1); // [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
- -
//глибоке вирівнювання з рекурсією
-function flatten(array) {
-  var flattend = [];
-  (function flat(array) {
-    array.forEach(function(el) {
-      if (Array.isArray(el)) flat(el);
-      else flattend.push(el);
-    });
-  })(array);
-  return flattend;
-}
- - - -

Специфікації

- - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
Array.prototype.flat proposalFinished (4)
- -

Сумісність з браузерами

- -
- - -

{{Compat("javascript.builtins.Array.flat")}}

-
- -

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

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/flatmap/index.html b/files/uk/web/javascript/reference/global_objects/array/flatmap/index.html deleted file mode 100644 index 58033475d1..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/flatmap/index.html +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Array.prototype.flatMap() -slug: Web/JavaScript/Reference/Global_Objects/Array/flatMap -tags: - - Array - - JavaScript - - flatMap - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/flatMap ---- -
{{JSRef}}
- -

Метод flatMap() спочатку виконує надану функцію на кожному елементі, а після цього вирівнює отриманий результат і зберігає його у новий масив. Це аналогічно послідовному виклику {{jsxref("Array.prototype.map","map()")}} та {{jsxref("Array.prototype.flat","flat()")}} з глибиною 1, але flatMap() буває доволі корисним, оскільки об'єднання обох методів у один є трохи ефективнішим.

- - - - - -

Синтаксис

- -
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
-    // повернути елемент для нового масиву new_array
-}[, thisArg])
- -

Параметри

- -
-
callback
-
Функція, яка створює елемент для нового масиву. Приймає три аргументи: -
-
-
currentValue
-
Поточний елемент масиву, що обробляється.
-
index{{optional_inline}}
-
Індекс поточного елемента, що обробляється.
-
array{{optional_inline}}
-
Масив, для якого був викликаний метод flatMap.
-
-
-
thisArg{{optional_inline}}
-
Значення, що використовується як this під час виконання callback.
-
- -

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

- -

Новий масив, в якому кожний елемент є результатом виклику функції callback, вирівняний до глибини 1.

- -

Опис

- -

Дивіться детальний опис функції зворотного виклику у {{jsxref("Array.prototype.map()")}}. Метод flatMap є ідентичним послідовному виклику методів map та flat з глибиною 1.

- -

Приклади

- -

map() та flatMap()

- -
let arr1 = [1, 2, 3, 4];
-
-arr1.map(x => [x * 2]);
-// [[2], [4], [6], [8]]
-
-arr1.flatMap(x => [x * 2]);
-// [2, 4, 6, 8]
-
-// вирівнюється тільки один рівень
-arr1.flatMap(x => [[x * 2]]);
-// [[2], [4], [6], [8]]
-
- -

В той час як наведений вище результат міг бути отриманий використанням самого map, нижче приклад, який краще демонструє використання flatMap.

- -

Давайте створимо список слів зі списку речень.

- -
let arr1 = ["Сьогодні сонячно у", "", "Львові"];
-
-arr1.map(x => x.split(" "));
-// [["Сьогодні","сонячно","у"],[""],["Львові"]]
-
-arr1.flatMap(x => x.split(" "));
-// ["Сьогодні","сонячно","у", "", "Львові"]
- -

Зверніть увагу, що довжина результуючого списку може відрізнятися від довжини початкового списку.

- -

Для додавання та видалення елементів під час виконання map()

- -

Метод flatMap можна використовувати, щоб додавати та видаляти елементи (змінювати кількість елементів) під час виконання map. Іншими словами, він дозволяє кожен з множини елементів перетворювати на множину елементів (обробляючи кожен елемент окремо), а не завжди 1-1. В цьому плані він протилежність метода filter. Просто поверніть 1-елементний масив, щоб залишити елемент, багатоелементний масив, щоб додати елементи, або порожній масив, щоб видалити елемент.

- -
// Припустимо, ми бажаємо видалити всі від'ємні числа та розбити непарні числа на парне число та 1
-let a = [5, 4, -3, 20, 17, -33, -4, 18]
-//       |\  \  x   |  | \   x   x   |
-//      [4,1, 4,   20, 16, 1,       18]
-
-a.flatMap( (n) =>
-  (n < 0) ?      [] :
-  (n % 2 == 0) ? [n] :
-                 [n-1, 1]
-)
-
-// очікуваний результат: [4, 1, 4, 20, 16, 1, 18]
-
- -

Альтернатива

- -

reduce() та concat()

- -
var arr1 = [1, 2, 3, 4];
-
-arr1.flatMap(x => [x * 2]);
-// є еквівалентом
-arr1.reduce((acc, x) => acc.concat([x * 2]), []);
-// [2, 4, 6, 8]
-
- -

Зауважте, однак, що цей метод краще не застосовувати для великих масивів, бо він буде неефективним: на кожній ітерації він створює новий тимчасовий масив, який треба прибирати збирачу сміття, і він копіює елементи з поточного масива-накопичувача у новий масив замість того, щоб просто додати нові елементи у існуючий масив.

- - - -

Специфікації

- - - - - - - - - - - - - - -
СпецифікаціяСтатусКомент
Array.prototype.flatMapЗавершено (4)
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.flatMap")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/foreach/index.html b/files/uk/web/javascript/reference/global_objects/array/foreach/index.html deleted file mode 100644 index 97a354787f..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/foreach/index.html +++ /dev/null @@ -1,290 +0,0 @@ ---- -title: Array.prototype.forEach() -slug: Web/JavaScript/Reference/Global_Objects/Array/forEach -tags: - - ECMAScript5 - - JavaScript - - Method - - Prototype - - Довідка -translation_of: Web/JavaScript/Reference/Global_Objects/Array/forEach ---- -
{{JSRef}}
- -

Метод forEach() виконує надану функцію один раз для кожного елемента масиву.

- -

{{EmbedInteractiveExample("pages/js/array-foreach.html")}}

- - - -

Синтаксис

- -
arr.forEach(callback(currentValue [, index [, array]])[, thisArg]);
- -

Параметри

- -
-
callback
-
Функція, що виконується для кожного елемента. Приймає три аргументи:
-
-
-
currentValue
-
Черговий елемент масиву, що обробляється.
-
index {{optional_inline}}
-
Індекс чергового елемента в масиві.
-
array {{optional_inline}}
-
Масив, для якого було викликано forEach().
-
-
-
thisArg {{optional_inline}}
-
-

Значення, що використовується як this при виконанні callback.

-
-
- -

Вертає

- -

undefined.

- -

Опис

- -

Метод forEach() викликає надану функцію callback для кожного елемента масиву у порядку зростання. Оминає властивості, які було видалено або не було започатковано (тобто, в розріджених масивах, дивіться приклад, наведений нижче).

- -

Функція callback викликається з трьома аргументами:

- -
    -
  1. значення елемента;
  2. -
  3. індекс елемента;
  4. -
  5. масив, що перебирається.
  6. -
- -

Якщо для forEach() вказано параметр thisArg, його буде використано як this для функції callback. Зрештою значення this для функції callback визначатиметься відповідно до загальних правил.

- -

Множина індексів елементів, що їх перебиратиме forEach() з'ясовується ще до першого виклику callback. Елементи, додані після здійснення виклику forEach(), буде знехтувано (callback для жодного з них не викликатиметься). Якщо змінити або видалити якийсь з елементів масиву, до функції callback потрапить те значення елемента, яке він мав безпосередньо перед відповідним викликом callback. Якщо елемент видалено до відвідування, відвідано не буде. Якщо вже відвіданий елемент видалено упродовж перебирання (наприклад, за допомогою {{jsxref("Array.prototype.shift()", "shift()")}}), подальші елементи будуть пропущені — дивіться приклади нижче у статті.

- -

Метод forEach() виконує функцію callback один раз для кожного елемента масиву. На відміну від {{jsxref("Array.prototype.map()", "map()")}} чи {{jsxref("Array.prototype.reduce()", "reduce()")}}, він завжди вертає значення {{jsxref("undefined")}}, тож продовжити ланцюжок викликів після нього неможливо. Досить типовим є виклик forEach() наприкінці ланцюжка методів з метою виконання додаткових дій.

- -

Сам метод forEach() не змінює масив, на якому його викликано, втім усередині функції callback це можливо.

- -
-

Заувага: Зупинити чи перервати цикл forEach() неможливо без викидання винятку. Якщо вам це потрібно, метод forEach() — не ліпший вибір. 

- -

Завчасне переривання може бути виконане за допомогою:

- - - -

Методи масивів: {{jsxref("Array.prototype.every()", "every()")}}, {{jsxref("Array.prototype.some()", "some()")}}, {{jsxref("Array.prototype.find()", "find()")}} та {{jsxref("Array.prototype.findIndex()", "findIndex()")}} перевіряють елементи масиву функцією-предикатом, яка повертає правдиве значення, якщо наступна ітерація необхідна.

-
- -

Приклади

- -

Операція не виконується для неініціалізованих значень (розріджені масиви)

- -
const arraySparse = [1,3,,7];
-let numCallbackRuns = 0;
-
-arraySparse.forEach(function(element){
-  console.log(element);
-  numCallbackRuns++;
-});
-
-console.log("numCallbackRuns: ", numCallbackRuns);
-
-// 1
-// 3
-// 7
-// numCallbackRuns: 3
-// коментар: як бачите, пропущене значення між 3 та 7 не викликало функцію.
- -

Перетворення циклу for на forEach

- -
const items = ['щось', 'то', 'має', 'бути'];
-const copy = [];
-
-// було
-for (let i = 0; i < items.length; i++) {
-  copy.push(items[i])
-}
-
-// стане
-items.forEach(function(item) {
-  copy.push(item)
-});
- -

Друк вмісту масиву

- -
-

Заувага: Для того, щоб відобразити вміст масиву у консолі, ви можете скористатись методом {{domxref("Console/table", "console.table()")}}, який виведе відформатовану версію масиву. Наступний приклад ілюструє інший спосіб це зробити, за допомогою forEach().

-
- -

Наведений код виводить значення кожного елемента масиву з нового рядка:

- -
function logArrayElements(element, index, array) {
-  console.log('array[' + index + '] = ' + element);
-}
-
-// Завважте, що індекс 2 буде пропущено,
-// позаяк елемента на тому місці в масиві немає.
-[2, 5, , 9].forEach(logArrayElements);
-
-// Буде виведено у консоль:
-// array[0] = 2
-// array[1] = 5
-// array[3] = 9
-
- -

Використання thisArg

- -

Наведений приклад змінює властивості об'єкта відповідно до кожного елемента в отриманому масиві:

- -
function Counter() {
-  this.sum = 0;
-  this.count = 0;
-}
-
-Counter.prototype.add = function(array) {
-  array.forEach(function(entry) {
-    this.sum += entry;
-    ++this.count;
-  }, this);
-  // ^---- Зверніть увагу!
-};
-
-const obj = new Counter();
-obj.add([2, 5, 9]);
-obj.count;
-// 3
-obj.sum;
-// 16
-
- -

Оскільки для forEach() вказано параметр thisArg, для кожного виклику callback (тут безіменної функції) він вживатиметься як this.

- -
-

Якщо передавати аргумент функції за допомогою стрілкового запису функції, то параметр thisArg можна не вказувати, позаяк стрілкова функція лексично прив'язує значення {{jsxref("Operators/this", "this")}}.

-
- -

Функція копіювання об'єкта

- -

Наступний код створює копію наданого об'єкта. Існує чимало способів створення копії об'єкта. Наведений приклад є лише одним з них і насправді призначений лише для наочного пояснення того, як працює Array.prototype.forEach() на прикладі використання нових функцій ECMAScript 5 з Object.* для роботи з керованими властивостями:

- -
function copy(obj) {
-  const copy = Object.create(Object.getPrototypeOf(obj));
-  const propNames = Object.getOwnPropertyNames(obj);
-
-  propNames.forEach(function(name) {
-    const desc = Object.getOwnPropertyDescriptor(obj, name);
-    Object.defineProperty(copy, name, desc);
-  });
-
-  return copy;
-}
-
-const obj1 = {a: 1, b: 2};
-const obj2 = copy(obj1);  // obj2 тепер схожий на obj1
-
- -

Якщо масив змінено під час перебору, інші елементи може бути пропущено

- -

Наведений приклад виводить у консоль послідовно "перший", "другий" та "четвертий". Коли перебір сягне другого елемента (що має значення "другий"), виклик words.shift() видалить перший елемент масиву, а всі, що лишаться, посунуться на одне місце ліворуч — "четвертий" стане наступним (після поточного), і "третій" таким чином буде пропущено:

- -
var words = ['перший', 'другий', 'третій', 'четвертий'];
-
-words.forEach(function(word) {
-  console.log(word);
-
-  if (word === 'другий') {
-    words.shift();
-  }
-});
-
-// перший
-// другий
-// четвертий
-
- -

Вирівнювання масиву

- -

Даний приклад наведено суто для навчальння. Якщо вам потрібно вирівняти масив вбудованими методами, ви можете скористатись методом {{jsxref("Array.prototype.flat()")}} (очікується у ES2019 та вже реалізований у деяких переглядачах).

- -
/**
-* Вирівнює переданий масив у одномірний
-*
-* @params {array} arr
-* @returns {array}
-*/
-function flatten(arr) {
-  const result = [];
-
-  arr.forEach((i) => {
-    if (Array.isArray(i)) {
-      result.push(...flatten(i))
-    } else {
-      result.push(i)
-    }
-  });
-
-  return result;
-}
-
-// Використання
-const problem = [1, 2, 3, [4, 5, [6, 7], 8, 9]]
-
-flatten(problem) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ESDraft', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}{{Spec2('ESDraft')}}
{{SpecName('ES6', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}{{Spec2('ES6')}}
{{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}}{{Spec2('ES5.1')}}Початкова виознака. Запроваджено у JavaScript 1.6.
- -

Підтримка веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.forEach")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/from/index.html b/files/uk/web/javascript/reference/global_objects/array/from/index.html deleted file mode 100644 index 7cfb6325b8..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/from/index.html +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Array.from() -slug: Web/JavaScript/Reference/Global_Objects/Array/from -tags: - - Array - - ECMAScript6 - - Масив -translation_of: Web/JavaScript/Reference/Global_Objects/Array/from ---- -
{{JSRef}}
- -

Метод Array.from() створює новий екземпляр Array (дрібну копію) з подібного до масиву або ітерабельного об'єкта.

- -
{{EmbedInteractiveExample("pages/js/array-from.html")}}
- - - -

Синтаксис

- -
Array.from(arrayLike[, mapFn[, thisArg]])
- -

Параметри

- -
-
arrayLike
-
Подібний до масиву або ітерабельний об'єкт, який треба перетворити на масив.
-
mapFn {{Optional_inline}}
-
Функція Map для виклику на кожному елементі масиву.
-
thisArg {{Optional_inline}}
-
Значення this для функції mapFn.
-
- -

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

- -

Новий екземпляр {{jsxref("Array")}}.

- -

Опис

- -

Array.from() дозволяє створювати масиви з:

- - - -

Array.from() має необов'язковий параметр mapFn, який дозволяє виконати функцію {{jsxref("Array.prototype.map", "map")}} на кожному елементі масиву (або об'єкта підкласу), який створюється. Іншими словами, Array.from(obj, mapFn, thisArg) має той самий результат, що й Array.from(obj).map(mapFn, thisArg), тільки він не створює проміжний масив. Це особливо важливо для певних підкласів масивів, таких як типізовані масиви, оскільки проміжний масив обов'язково урізав би значення для перетворення у відповідний тип.

- -

Властивість length методу from() дорівнює 1.

- -

У ES2015, синтаксис класів дозволяє створення підкласів як для вбудованих класів, так і для тих, що створені користувачем; в результаті статичні методи, такі як Array.from "успадковуються" підкласами класу Array і створюють нові екземпляри підкласу, а не класу Array.

- -

Приклади

- -

Масив з рядка

- -
Array.from('foo');
-// [ "f", "o", "o" ]
- -

Масив з об'єкта Set

- -
const set = new Set(['foo', 'bar', 'baz', 'foo']);
-Array.from(set);
-// [ "foo", "bar", "baz" ]
- -

Масив з об'єкта Map

- -
const map = new Map([[1, 2], [2, 4], [4, 8]]);
-Array.from(map);
-// [[1, 2], [2, 4], [4, 8]]
-
-const mapper = new Map([['1', 'a'], ['2', 'b']]);
-Array.from(mapper.values());
-// ['a', 'b'];
-
-Array.from(mapper.keys());
-// ['1', '2'];
-
- -

Масив з подібного до масиву об'єкта (arguments)

- -
function f() {
-  return Array.from(arguments);
-}
-
-f(1, 2, 3);
-
-// [ 1, 2, 3 ]
- -

Використання стрілкових функцій та Array.from()

- -
// Використання стрілкової функції в якості функції map
-// для маніпулювання елементами
-Array.from([1, 2, 3], x => x + x);
-// [2, 4, 6]
-
-
-// Генерування послідовності чисел
-// Оскільки масив ініціалізується значенням `undefined` на кожній позиції,
-// значення `v` нижче дорівнюватиме `undefined`
-Array.from({length: 5}, (v, i) => i);
-// [0, 1, 2, 3, 4]
-
- -

Генератор послідовності (range)

- -
// Функція генератора послідовності (зазвичай відома як "range", напр. у Clojure, PHP та ін.)
-const range = (start, stop, step) => Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));
-
-// Згенерувати числа у діапазоні 0..4
-range(0, 4, 1);
-// [0, 1, 2, 3, 4]
-
-// Згенерувати числа у діапазоні 1..10 з кроком 2
-range(1, 10, 2);
-// [1, 3, 5, 7, 9]
-
-// Згенерувати алфавіт з допомогою Array.from, користуючись тим, що він впорядкований як послідовність
-range('A'.charCodeAt(0), 'Z'.charCodeAt(0), 1).map(x => String.fromCharCode(x));
-// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
-
- -

Поліфіл

- -

Метод Array.from був доданий до стандарту ECMA-262 у 6-й версії (ES2015); таким чином, він може не існувати у інших реалізаціях стандарту. Ви можете обійти цю проблему, вставивши наступний код на початку ваших скриптів, що дозволить використовувати метод Array.from у реалізаціях, які не мають його вбудованої підтримки. Цей алгоритм саме той, що визначений у ECMA-262, у 6-й версії, за умови, що Object та TypeError мають свої первинні значення і callback.call дорівнює первинному значенню {{jsxref("Function.prototype.call")}}. На додаток, оскільки справжні ітерабельні об'єкти не можуть мати поліфілу, ця реалізація не підтримує загальні ітерабельні об'єкти, визначені у 6-й версії ECMA-262.

- -
// Функціональні кроки ECMA-262, версія 6, 22.1.2.1
-if (!Array.from) {
-  Array.from = (function () {
-    var toStr = Object.prototype.toString;
-    var isCallable = function (fn) {
-      return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
-    };
-    var toInteger = function (value) {
-      var number = Number(value);
-      if (isNaN(number)) { return 0; }
-      if (number === 0 || !isFinite(number)) { return number; }
-      return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
-    };
-    var maxSafeInteger = Math.pow(2, 53) - 1;
-    var toLength = function (value) {
-      var len = toInteger(value);
-      return Math.min(Math.max(len, 0), maxSafeInteger);
-    };
-
-    // Властивість length метода from дорівнює 1.
-    return function from(arrayLike/*, mapFn, thisArg */) {
-      // 1. Нехай C дорівнює значенню this.
-      var C = this;
-
-      // 2. Нехай items дорівнює ToObject(arrayLike).
-      var items = Object(arrayLike);
-
-      // 3. ReturnIfAbrupt(items).
-      if (arrayLike == null) {
-        throw new TypeError('Array.from requires an array-like object - not null or undefined');
-      }
-
-      // 4. Якщо mapfn дорівнює undefined, тоді нехай mapping дорівнює false.
-      var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
-      var T;
-      if (typeof mapFn !== 'undefined') {
-        // 5. інакше
-        // 5. а Якщо IsCallable(mapfn) дорівнює false, викинути виняток TypeError.
-        if (!isCallable(mapFn)) {
-          throw new TypeError('Array.from: when provided, the second argument must be a function');
-        }
-
-        // 5. б. Якщо надано thisArg, нехай T дорівнює thisArg; інакше нехай T дорівнює undefined.
-        if (arguments.length > 2) {
-          T = arguments[2];
-        }
-      }
-
-      // 10. Нехай lenValue дорівнює Get(items, "length").
-      // 11. Нехай len дорівнює ToLength(lenValue).
-      var len = toLength(items.length);
-
-      // 13. Якщо IsConstructor(C) дорівнює true, тоді
-      // 13. а. Нехай A дорівнює результату виклику внутрішнього метода С [[Construct]]
-      // зі списком аргументів, що містить єдиний елемент len.
-      // 14. a. Інакше, нехай A дорівнює ArrayCreate(len).
-      var A = isCallable(C) ? Object(new C(len)) : new Array(len);
-
-      // 16. Нехай k дорівнює 0.
-      var k = 0;
-      // 17. Повторювати, доки k < len… (також кроки a - h)
-      var kValue;
-      while (k < len) {
-        kValue = items[k];
-        if (mapFn) {
-          A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
-        } else {
-          A[k] = kValue;
-        }
-        k += 1;
-      }
-      // 18. Нехай putStatus дорівнює Put(A, "length", len, true).
-      A.length = len;
-      // 20. Повернути A.
-      return A;
-    };
-  }());
-}
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ESDraft', '#sec-array.from', 'Array.from')}}{{Spec2('ESDraft')}}
{{SpecName('ES2015', '#sec-array.from', 'Array.from')}}{{Spec2('ES2015')}}Початкове визначення.
- -

Сумісність з веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.from")}}

- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/includes/index.html b/files/uk/web/javascript/reference/global_objects/array/includes/index.html deleted file mode 100644 index 3030f78d9f..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/includes/index.html +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Array.prototype.includes() -slug: Web/JavaScript/Reference/Global_Objects/Array/includes -tags: - - Array - - JavaScript - - Method - - Prototype - - polyfill - - Довідка - - Масив -translation_of: Web/JavaScript/Reference/Global_Objects/Array/includes ---- -
{{JSRef}}
- -

Метод includes() з'ясовує, чи масив містить елемент із вказаним значенням, та вертає відповідно true або false.

- -

{{EmbedInteractiveExample("pages/js/array-includes.html")}}

- - - -

Синтаксис

- -
arr.includes(valueToFind[, fromIndex])
- -

Параметри

- -
-
valueToFind
-
Значення елемента, який слід знайти.
-
- -
-

Примітка: При порівнянні рядків та літер, includes() чутливий до регістру.

-
- -
-
fromIndex {{optional_inline}}
-
Позиція у масиві, з якої потрібно починати пошук valueToFind; перша літера шукатиметься за індексом fromIndex, якщо fromIndex є позитивним значенням, або за індексом array.length + fromIndex, якщо fromIndex від'ємний (використовуючи {{interwiki("wikipedia", "Модуль_(математика)", "абсолютну величину")}} fromIndex як кількість літер з кінця масиву, де потрібно починати пошук). За замовчуванням дорівнює 0.
-
- -

Вертає

- -

Значення {{jsxref("Boolean")}}, яке дорівнює true, якщо значення valueToFind знайдене у масиві (або у частині масиву, якщо заданий параметр fromIndex). Всі нульові значення вважаються рівними, незалежно від знаку (тому -0 вважатиметься рівним і 0, і +0), але false не вважається тим самим, що й 0.

- -
-

Примітка: Технічно кажучи, includes() використовує алгоритм sameValueZero для визначення того, чи знайдено заданий елемент.

-
- -

Приклади

- -
[1, 2, 3].includes(2);      // true
-[1, 2, 3].includes(4);      // false
-[1, 2, 3].includes(3, 3);   // false
-[1, 2, 3].includes(3, -1);  // true
-[1, 2, NaN].includes(NaN);  // true
-
- -

fromIndex більший або дорівнює довжині масиву

- -

Якщо fromIndex дорівнює або перевищує довжину масиву, пошук не здійснюється й завжди вертається false:

- -
var arr = ['a', 'b', 'c'];
-
-arr.includes('c', 3);    // вертає false
-arr.includes('c', 100);  // вертає false
- -

Обчислений індекс менший за 0

- -

Якщо значення fromIndex від'ємне, використовується обчислений індекс для визначення позиції, з якої починати пошук valueToFind у масиві. Якщо обчислений індекс менший або дорівнює -1 * array.length, пошук здійснюється у всьому масиві.

- -
// Довжина масиву дорівнює 3
-// fromIndex дорівнює -100
-// Обчислений індекс дорівнює 3 + (-100) = -97
-
-var arr = ['a', 'b', 'c'];
-
-arr.includes('a', -100); // true
-arr.includes('b', -100); // true
-arr.includes('c', -100); // true
-arr.includes('a', -2); // false
- -

Застосування includes() як загального метода

- -

Реалізація метода includes() є зумисне узагальненою. Об'єкт, на який вказує this, не обов'язково повинен належати до класу Array, тож використання includes() можна поширити на інші масивоподібні об'єкти. В наведеному нижче прикладі його застосовано до об'єкта {{jsxref("Functions/arguments", "arguments")}}:

- -
(function() {
-  console.log([].includes.call(arguments, 'a'));  // виводить true
-  console.log([].includes.call(arguments, 'd'));  // виводить false
-})('a','b','c');
-
- - - -

Специфікації

- - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ESDraft', '#sec-array.prototype.includes', 'Array.prototype.includes')}}{{Spec2('ESDraft')}}
{{SpecName('ES7', '#sec-array.prototype.includes', 'Array.prototype.includes')}}{{Spec2('ES7')}}Початкова виознака.
- -

Підтримка веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.includes")}}

- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/index.html b/files/uk/web/javascript/reference/global_objects/array/index.html deleted file mode 100644 index 18045d9c84..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/index.html +++ /dev/null @@ -1,431 +0,0 @@ ---- -title: Array -slug: Web/JavaScript/Reference/Global_Objects/Array -tags: - - Array - - JavaScript - - Масив -translation_of: Web/JavaScript/Reference/Global_Objects/Array ---- -
{{JSRef}}
- -

Array є глобальним об'єктом, що використовується для створення масивів; які є високорівневими, спископодібними об'єктами.

- -

Створення масиву

- -
var fruits = ["Яблуко", "Банан"];
-
-console.log(fruits.length);
-// 2
-
- -

Доступ до елементів масиву (за індексом)

- -
var first = fruits[0];
-// Яблуко
-
-var last = fruits[fruits.length - 1];
-// Банан
-
- -

Обхід елементів масиву

- -
fruits.forEach(function (item, index, array) {
-  console.log(item, index);
-});
-// Яблуко 0
-// Банан 1
-
- -

Додавання в кінець масиву

- -
var newLength = fruits.push("Апельсин");
-// ["Яблуко", "Банан", "Апельсин"]
-
- -

Видалення елемента з кінця масиву

- -
var last = fruits.pop(); // видалити Апельсин (з кінця)
-// ["Яблуко", "Банан"];
-
- -

Видалення елемента з початку масиву

- -
var first = fruits.shift(); // видалити Яблуко з початку
-// ["Банан"];
-
- -

Додавання елемента до початку масиву

- -
var newLength = fruits.unshift("Полуниця") // додади до початку
-// ["Полуниця", "Банан"];
-
- -

Пошук індексу елемента в масиві

- -
fruits.push("Манго");
-// ["Полуниця", "Банан", "Манго"]
-
-var pos = fruits.indexOf("Банан");
-// 1
-
- -

Видалення елемента масиву за його індексом (позицією)

- -
var removedItem = fruits.splice(pos, 1); // ось, як видаляється елемент
-// ["Полуниця", "Манго"]
-
- -

Видалення елементів починаючи з певного індексу

- -
var vegetables = ['Капуста', 'Ріпа', 'Редька', 'Морква'];
-console.log(vegetables);
-// ["Капуста", "Ріпа", "Редька", "Морква"]
-
-var pos = 1, n = 2;
-
-var removedItems = vegetables.splice(pos, n);
-// ось так видаляються елементи, n визначає кількість елементів на видалення,
-// від цієї позиції (pos) в напрямку кінця масиву.
-
-console.log(vegetables);
-// ["Капуста", "Морква"] (початковий масив змінено)
-
-console.log(removedItems);
-// ["Ріпа", "Редька"]
- -

Копіювання масиву

- -
var shallowCopy = fruits.slice(); // ось так робиться копія
-// ["Полуниця", "Манго"]
-
- -

Синтаксис

- -
[element0, element1, ..., elementN]
-new Array(element0, element1[, ...[, elementN]])
-new Array(arrayLength)
-
- -
-
-

Параметри

-
-
- -

elementN

- -
-
Масив у JavaScript ініціалізується за допомогою наперед заданих елементів, за виключенням тієї ситуації коли в конструктор Array передається тільки один аргумент і він є числом (див. параметр arrayLength нижче). Зверніть увагу на те, що це спрацьовує лише у тому випадку, якщо масив створено за допомогою  конструктора Array, а не через літерали масивів створених з допомогою синтаксу квадратних дужок.
-
arrayLength
-
Якщо єдиним аргументом (вхідним параметром) конструктора Array є ціле число від 0 до 232-1 (включно), буде повернено новий JavaScript-масив з властивістю length рівною цьому числу.  Зверніть увагу, що цей масив матиме пусті слоти, а не слоти зі значеннями undefined. Якщо аргументом буде будь-яке інше число, виникне виняток RangeError.
-
- -

Опис

- -

Масиви - це спископодібні об'єкти, чий прототип має методи для операцій обходу та зміни масиву. Ані довжина масиву, ані типи його елементів не є незмінними. Довжина масиву може змінитись будь-коли, як і позиція даних в масиві; тому їх використання залежить від рішення програміста. Взагалі, це зручні характеристики; але якщо ці особливості не є бажаними для ваших конкретних цілей, ви можете розглянути можливість використання типізованих масивів.

- -

Масиви не можуть використовувати рядки у якості індексів елементів (як асоціативні масиви), а тільки цілі числа(індекси). Присвоєння або звернення через не цілочисельні значення, з використанням квадратних дужок (або через крапку), не присвоїть або не отримає елемент з самого списку масиву, але присвоїть чи отримає доступ до змінної, пов'язаної з колекцією властивостей об'єкта(властивості) цього масиву. Об'єктні властивості масиву та список елементів масиву є відокремленими, і операції обходу та зміни цього масиву не застосовуються до цих іменованих властивостей.

- -

Доступ до елементів масиву

- -

Масиви в JavaScript індексуються з нуля: перший елемент масиву має індекс, який дорівнює 0, а індекс останнього елемента відповідає значенню властивості масиву {{jsxref("Array.length", "length")}} мінус 1. Використання неправильного індексу повертає undefined.

- -
var arr = ['це перший елемент', 'це другий елемент'];
-console.log(arr[0]);              // виводить 'це перший елемент'
-console.log(arr[1]);              // виводить 'це другий елемент'
-console.log(arr[arr.length - 1]); // виводить 'це другий елемент'
-
- -

Елементи масиву є властивостями об'єкта, так само, як toString є властивістю, але спроби звернутися до елемента масиву наступним чином згенерує синтаксичну помилку через неправильне ім'я властивості:

- -
console.log(arr.0); // є синтаксична помилка
-
- -

В масивах JavaScript немає нічого особливого, що призводить до цього. До властивостей JavaScript, які починаються з цифри, не можна звертатися через крапку; необхідно звертатися через квадратні дужки. Наприклад, якщо ви маєте об'єкт з властивістю під назвою '3d', до неї можна звертатися тільки через квадратні дужки. Приклад:

- -
var years = [1950, 1960, 1970, 1980, 1990, 2000, 2010];
-console.log(years.0);   // є синтаксична помилка
-console.log(years[0]);  // працює вірно
-
- -
renderer.3d.setTexture(model, 'character.png');     // є синтаксична помилка
-renderer['3d'].setTexture(model, 'character.png');  // працює вірно
-
- -

Зверніть увагу, що '3d' має писатися в лапках. Індекси масивів JavaScript також можна писати в лапках (напр., years['2'] замість years[2]), хоча це не обов'язково. Індекс 2 у years[2] примусово перетворюється на рядок рушієм JavaScript через неявне перетворення toString. Саме через це '2' та '02' займали б два різні слоти в об'єкті years і наступний приклад дорівнював би true:

- -
console.log(years['2'] != years['02']);
-
- -

Схожим чином до властивостей об'єкта, які є зарезервованими словами (!) можна звертатися тільки через рядкові значення у квадратних дужках (але до них можна звертатися через крапку у firefox 40.0a2 наприклад):

- -
var promise = {
-  'var'  : 'text',
-  'array': [1, 2, 3, 4]
-};
-
-console.log(promise['array']);
-
- -

Зв'язок між length та числовими властивостями

- -

У масивах JavaScript властивість {{jsxref("Array.length", "length")}} та числові властивості взаємопов'язані. Декілька з вбудованих методів масивів (напр., {{jsxref("Array.join", "join")}}, {{jsxref("Array.slice", "slice")}}, {{jsxref("Array.indexOf", "indexOf")}}, і т.д.) враховують значення властивості {{jsxref("Array.length", "length")}} під час виконання. Інші методи (напр., {{jsxref("Array.push", "push")}}, {{jsxref("Array.splice", "splice")}}, і т.д.) призводять до зміни властивості масиву {{jsxref("Array.length", "length")}}.

- -
var fruits = [];
-fruits.push('банан', 'яблуко', 'персик');
-
-console.log(fruits.length); // 3
-
- -

Присвоєння властивості до масиву JavaScript змінить властивість масиву {{jsxref("Array.length", "length")}} відповідним чином, якщо властивість є коректним індексом масиву, і цей індекс знаходиться поза поточними межами масиву:

- -
fruits[5] = 'манго';
-console.log(fruits[5]); // 'манго'
-console.log(Object.keys(fruits));  // ['0', '1', '2', '5']
-console.log(fruits.length); // 6
-
- -

Збільшення значення {{jsxref("Array.length", "length")}}.

- -
fruits.length = 10;
-console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
-console.log(fruits.length); // 10
-
- -

Однак, зменшення значення властивості {{jsxref("Array.length", "length")}} видаляє елементи.

- -
fruits.length = 2;
-console.log(Object.keys(fruits)); // ['0', '1']
-console.log(fruits.length); // 2
-
- -

Це пояснюється далі на сторінці {{jsxref("Array.length")}}.

- -

Створення масиву з використанням результату пошуку збігів

- -

Пошук збігів між регулярним виразом та рядком може створити масив JavaScript. Цей масив має властивості та елементи, які надають інформацію про збіг. Такий масив повертається методами {{jsxref("RegExp.exec")}}, {{jsxref("String.match")}} та {{jsxref("String.replace")}}. Щоб краще пояснити ці властивості та елементи, подивіться на наступний приклад, а тоді зверніться до таблиці нижче:

- -
// Пошук послідовності з однієї d, далі одна або більше b, далі одна d
-// Запам'ятати всі b і d, яка йде за ними
-// Ігнорувати регістр
-
-var myRe = /d(b+)(d)/i;
-var myArray = myRe.exec('cdbBdbsbz');
-
- -

Властивості та елементи, які повертаються в результаті даного пошуку збігів:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Властивість/ЕлементОписПриклад
inputВластивість тільки для читання, відображає початковий рядок, в якому виконується пошук збігів з регулярним виразом.cdbBdbsbz
indexВластивість тільки для читання, індекс збігу у рядку, нумерується з нуля.1
[0]Елемент тільки для читання, який містить символи останнього збігу.dbBd
[1], ...[n]Елементи тільки для читання, які містять підрядки збігу, що заключені у дужки, якщо такі є у регулярному виразі. Кількість можливих підрядків у дужках є необмеженою.[1]: bB
- [2]: d
- -

Властивості

- -
-
Array.length
-
Властивість length конструктора Array, дорівнює 1.
-
{{jsxref("Array.prototype")}}
-
Дозволяє додавати властивості до усіх масивів.
-
- -

Методи

- -
-
{{jsxref("Array.from()")}}
-
Створює новий екземпляр Array з подібного до масиву або ітерабельного об'єкта.
-
{{jsxref("Array.isArray()")}}
-
Повертає true, якщо змінна є масивом, якщо ні, то повертає false.
-
{{jsxref("Array.of()")}}
-
Створює новий екземпляр Array з кількістю аргументів, заданих через змінну, незважаючи на кількість або тип аргументів.
-
- -

Екземпляри Array

- -

Всі екземпляри Array наслідуються від {{jsxref("Array.prototype")}}. Прототип конструктора Array може бути змінений, що вплине на всі екземпляри Array.

- -

Властивості

- -
{{page('uk/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Властивості')}}
- -

Методи

- -

Методи модифікації

- -
{{page('/uk/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Методи_модифікації')}}
- -

Методи доступу

- -
{{page('/uk/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Методи_доступу')}}
- -

Методи перебору

- -
{{page('uk/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Методи_перебору')}}
- -

Загальні методи масивів

- -
-

Загальні методи масивів є нестандартними, застарілими і будуть прибрані найближчим часом.

-
- -

Іноді ви б хотіли застосувати методи масивів на рядках або інших подібних до масиву об'єктах (таких як {{jsxref("Functions/arguments", "arguments", "", 1)}} у функції). В такому випадку, ви розглядаєте рядок як масив символів (чи не об'єкт масиву як масив). Наприклад, для того, щоб перевірити, що кожний символ у змінній str є літерою, ви б написали:

- -
function isLetter(character) {
-  return character >= 'a' && character <= 'z';
-}
-
-if (Array.prototype.every.call(str, isLetter)) {
-  console.log("Рядок '" + str + "' містить тільки літери!");
-}
-
- -

Такий запис є доволі марнотратним, і у JavaScript 1.6 було запроваджено загальне скорочення:

- -
if (Array.every(str, isLetter)) {
-  console.log("Рядок '" + str + "' містить тільки літери!");
-}
- -

{{jsxref("Global_Objects/String", "Загальні методи", "#String_generic_methods", 1)}} також доступні у {{jsxref("String", "рядках")}}.

- -

Вони не є частиною стандартів ECMAScript і не підтримуються не Gecko оглядачами. У якості стандартної альтернативи, ви можете перетворити ваш об'єкт на справжній масив з допомогою методу {{jsxref("Array.from()")}}; хоча цей метод може не підтримуватися у старих оглядачах:

- -
if (Array.from(str).every(isLetter)) {
-  console.log("Рядок '" + str + "' містить тільки літери!");
-}
- -

Приклади

- -

Створення масиву

- -

Наступний приклад створює масив msgArray довжиною 0, потім додає значення елементам msgArray[0] та msgArray[99], змінюючи довжину масиву на 100.

- -
var msgArray = [];
-msgArray[0] = 'Привіт';
-msgArray[99] = 'світ';
-
-if (msgArray.length === 100) {
-  console.log('Довжина масиву 100.');
-}
-
- -

Створення двовимірного масиву

- -

Наступний код створює шахівницю у вигляді двовимірного масиву рядків. Перший хід робиться копіюванням 'п' з (6,4) до (4,4). Стара позиція (6,4) робиться порожньою.

- -
var board = [
-  ['Т','Н','С','Ф','К','С','Н','Т'],
-  ['П','П','П','П','П','П','П','П'],
-  [' ',' ',' ',' ',' ',' ',' ',' '],
-  [' ',' ',' ',' ',' ',' ',' ',' '],
-  [' ',' ',' ',' ',' ',' ',' ',' '],
-  [' ',' ',' ',' ',' ',' ',' ',' '],
-  ['п','п','п','п','п','п','п','П'],
-  ['т','н','с','ф','к','с','н','т'] ];
-
-console.log(board.join('\n') + '\n\n');
-
-// Перемістити королівського пішака вперед на 2
-board[4][4] = board[6][4];
-board[6][4] = ' ';
-console.log(board.join('\n'));
-
- -

Ось результат:

- -
Т,Н,С,Ф,К,С,Н,Т
-П,П,П,П,П,П,П,П
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
-п,п,п,п,п,п,п,п
-т,н,с,ф,к,с,н,т
-
-Т,Н,С,Ф,К,С,Н,Т
-П,П,П,П,П,П,П,П
- , , , , , , ,
- , , , , , , ,
- , , , ,п, , ,
- , , , , , , ,
-п,п,п,п, ,п,п,п
-т,н,с,ф,к,с,н,т
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES1')}}{{Spec2('ES1')}}Початкове визначення.
{{SpecName('ES5.1', '#sec-15.4', 'Array')}}{{Spec2('ES5.1')}}Додано нові методи: {{jsxref("Array.isArray")}}, {{jsxref("Array.prototype.indexOf", "indexOf")}}, {{jsxref("Array.prototype.lastIndexOf", "lastIndexOf")}}, {{jsxref("Array.prototype.every", "every")}}, {{jsxref("Array.prototype.some", "some")}}, {{jsxref("Array.prototype.forEach", "forEach")}}, {{jsxref("Array.prototype.map", "map")}}, {{jsxref("Array.prototype.filter", "filter")}}, {{jsxref("Array.prototype.reduce", "reduce")}}, {{jsxref("Array.prototype.reduceRight", "reduceRight")}}
{{SpecName('ES6', '#sec-array-objects', 'Array')}}{{Spec2('ES6')}}Додано нові методи: {{jsxref("Array.from")}}, {{jsxref("Array.of")}}, {{jsxref("Array.prototype.find", "find")}}, {{jsxref("Array.prototype.findIndex", "findIndex")}}, {{jsxref("Array.prototype.fill", "fill")}}, {{jsxref("Array.prototype.copyWithin", "copyWithin")}}
{{SpecName('ESDraft', '#sec-array-objects', 'Array')}}{{Spec2('ESDraft')}}Додано новий метод: {{jsxref("Array.prototype.includes()")}}
- -

Сумісність з веб-оглядачами

- - - -

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

- -
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/indexof/index.html b/files/uk/web/javascript/reference/global_objects/array/indexof/index.html deleted file mode 100644 index 049c3ab869..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/indexof/index.html +++ /dev/null @@ -1,260 +0,0 @@ ---- -title: Array.prototype.indexOf() -slug: Web/JavaScript/Reference/Global_Objects/Array/indexOf -tags: - - Array - - JavaScript - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf ---- -
{{JSRef}}
- -

Метод indexOf() повертає перший індекс, за яким даний елемент був знайдений в масиві, а якщо він відсутній, то повертає -1.

- -
-

Примітка: Щодо метода String, дивіться {{jsxref("String.prototype.indexOf()")}}.

-
- -
var a = [2, 9, 9];
-a.indexOf(2); // 0
-a.indexOf(7); // -1
-
-if (a.indexOf(7) === -1) {
-  // елемент не існує у масиві
-}
-
- -

Синтаксис

- -
arr.indexOf(searchElement[, fromIndex])
- -

Параметри

- -
-
searchElement
-
Елемент, який потрібно знайти.
-
fromIndex {{optional_inline}}
-
Індекс, з якого починається пошук. Якщо індекс більше або дорівнює довжині масиву, повертається  -1, що означає, що масив не буде шукатися. Якщо значення показника є від'ємним числом, то воно трактується як зміщення від кінця масиву.
-
Примітка: якщо наданий індекс від'ємний, масив все ще ітерується спереду назад. Якщо індекс  рівний 0, то буде проведений пошук по всьому масиву. За замовчуванням: 0 (виконується пошук по всьому масиву).
-
- -

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

- -

Перший індекс елемента в масиві; якщо не знайдено, то -1.

- -

Опис

- -

indexOf() порівнює searchElement з елементами Масиву, використовуючи строгу рівність (той самий метод, що використовується з допомогою === або потрійним дорівнює).

- -

Приклад

- -

Використання indexOf()

- -

У наступному прикладі indexOf() використовується для пошуку значень в масиві.

- -
var array = [2, 9, 9];
-array.indexOf(2);     // 0
-array.indexOf(7);     // -1
-array.indexOf(9, 2);  // 2
-array.indexOf(2, -1); // -1
-array.indexOf(2, -3); // 0
-
- -

Пошук всіх відопвідностей на елементі

- -
var indices = [];
-var array = ['a', 'b', 'a', 'c', 'a', 'd'];
-var element = 'a';
-var idx = array.indexOf(element);
-while (idx != -1) {
-  indices.push(idx);
-  idx = array.indexOf(element, idx + 1);
-}
-console.log(indices);
-// [0, 2, 4]
-
- -

Пошук, чи існує елемент в масиві, і його оновлення 

- -
function updateVegetablesCollection (veggies, veggie) {
-    if (veggies.indexOf(veggie) === -1) {
-        veggies.push(veggie);
-        console.log('Оновлений набір овочів : ' + veggies);
-    } else if (veggies.indexOf(veggie) > -1) {
-        console.log(veggie + ' вже існує у наборі овочів.');
-    }
-}
-
-var veggies = ['картопля', 'помідор', 'чилі', 'зелений перець'];
-
-updateVegetablesCollection(veggies, 'шпинат');
-// Оновлений набір овочів: картопля,помідор,чилі,зелений перець,шпинат
-updateVegetablesCollection(veggies, 'шпинат');
-// шпинат вже існує у наборі овочів.
-
- -

Поліфіл

- -

indexOf() був доданий в стандарт ECMA-262 в 5-му виданні; як такий він може бути присутнім не у всіх браузерах. Це можна обійти, використовуючи наступний код на початку скриптів. Це дозволить вам використовувати метод indexOf(), коли ще немає вбудованої підтримки в браузері. Цей алгоритм збігається із зазначеною в ECMA-262, 5-е видання, припускаючи, що{{jsxref("Global_Objects/TypeError", "TypeError")}} і {{jsxref("Math.abs()")}} має свої оригінальні значення.

- -
if (!Array.prototype.indexOf) {
-  Array.prototype.indexOf = function indexOf(member, startFrom) {
-    /*
-   У спрощеному режимі, якщо змінна `this` має значення null або
- undefined, то вона встановлюється в об'єкт window. В іншому випадку
- `this` автоматично перетворюється в об'єкт. У строгому режимі, якщо
- змінна 'this' має значення null або undefined, генерується 'TypeError'.
-    */
-    if (this == null) {
-      throw new TypeError("Array.prototype.indexOf() - can't convert `" + this + "` to object");
-    }
-
-    var
-      index = isFinite(startFrom) ? Math.floor(startFrom) : 0,
-      that = this instanceof Object ? this : new Object(this),
-      length = isFinite(that.length) ? Math.floor(that.length) : 0;
-
-    if (index >= length) {
-      return -1;
-    }
-
-    if (index < 0) {
-      index = Math.max(length + index, 0);
-    }
-
-    if (member === undefined) {
-      /*
-        Оскільки `member` не визначено, ключі, які не існують,
-        будуть мати те ж значення, що і `member`, і, отже, повинні
-        бути перевірені.
-      */
-      do {
-        if (index in that && that[index] === undefined) {
-          return index;
-        }
-      } while (++index < length);
-    } else {
-      do {
-        if (that[index] === member) {
-          return index;
-        }
-      } while (++index < length);
-    }
-
-    return -1;
-  };
-}
- -

Однак, якщо ви більше зацікавлені у всіх маленьких технічних бітах, визначених стандартом ECMA, і менше стурбовані продуктивністю або лаконічністю, то ви можете знайти це більш описове заповнення більш корисним.

- -
// Кроки продукції ECMA-262, Edition 5, 15.4.4.14
-// Посилання: http://es5.github.io/#x15.4.4.14
-if (!Array.prototype.indexOf) {
-  Array.prototype.indexOf = function(searchElement, fromIndex) {
-
-    var k;
-
-    // 1. Нехай o є результатом виклику ToObject, що передає це
-    //    значення в якості аргументу.
-    if (this == null) {
-      throw new TypeError('"this" is null or not defined');
-    }
-
-    var o = Object(this);
-
-    // 2. Нехай lenValue є результатом виклику Get,
-    //    внутрішнього методу o з аргументом "length".
-    // 3. Нехай len буде ToUint32(lenValue).
-    var len = o.length >>> 0;
-
-    // 4. Якщо len рівне 0, return -1.
-    if (len === 0) {
-      return -1;
-    }
-
-    // Якщо аргумент fromIndex був переданий, let n =
-    // ToInteger(fromIndex); інакше let n = 0.
-    var n = fromIndex | 0;
-
-    // 6. Якщо n >= len, return -1.
-    if (n >= len) {
-      return -1;
-    }
-
-    // 7. Якщо n >= 0, то нехай k дорівнює n.
-    // 8. Інакше, n<0, нехай k дорівнює len - abs(n).
-    //    Якщо k менше, ніж 0, тоді нехай k дорівнює 0.
-    k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
-
-    // 9. Повторювати, доки k < len
-    while (k < len) {
-      // а. Нехай Pk дорівнює ToString(k). Це неочевидно для лівосторонніх операндів оператора in
-      // б. Нехай kPresent буде результатом виклику
-      //    внутрішнього метода o HasProperty з аргументом Pk.
-      //    Цей крок можна поєднати з в
-      // в. Якщо kPresent дорівнює true, тоді
-      //    i.  Нехай elementK буде результатом виклику
-      //        внутрішнього метода o Getwith з аргументом ToString(k).
-      //   ii.  Нехай те саме буде результатом застосування
-      //        Алгоритму Строгого Порівняння (Strict Equality Comparison Algorithm)
-      //        до searchElement та elementK.
-      //  iii.  Якщо те саме дорівнює true, повернути k.
-      if (k in o && o[k] === searchElement) {
-        return k;
-      }
-      k++;
-    }
-    return -1;
-  };
-}
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES5.1', '#sec-15.4.4.14', 'Array.prototype.indexOf')}}{{Spec2('ES5.1')}}Початкове визначення. Реалізовано у JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.indexOf")}}

-
- -

Примітки щодо сумісності

- - - -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/isarray/index.html b/files/uk/web/javascript/reference/global_objects/array/isarray/index.html deleted file mode 100644 index 8f7b888535..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/isarray/index.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Array.isArray() -slug: Web/JavaScript/Reference/Global_Objects/Array/isArray -tags: - - Array - - ECMAScript5 - - JavaScript - - Method - - polyfill - - Довідка -translation_of: Web/JavaScript/Reference/Global_Objects/Array/isArray ---- -
{{JSRef}}
- -
Метод Array.isArray() з'ясовує, чи є передане значення {{jsxref("Array", "масивом")}}.
- -
- -
Array.isArray([1, 2, 3]);    // true
-Array.isArray({foo: 123});   // false
-Array.isArray('foobar');     // false
-Array.isArray(undefined);    // false
-
- -

Синтакс

- -
Array.isArray(value)
- -

Параметри

- -
-
value
-
Значення, яке має бути перевірено.
-
- -

Вертає

- -

Значення true, якщо value є {{jsxref("Array", "масивом")}}; false — якщо ні.

- -

Опис

- -

Якщо передане значення є {{jsxref("Array", "масивом")}}, повертається true, інакше повертається false.

- -

Більш докладні відомості дивіться у статті «Як з'ясувати абсолютно точно, чи є об'єкт у JavaScript масивом». При використанні екземпляра {{jsxref("TypedArray")}} завжди повертається false.

- -

Приклади

- -
//Всі наведені далі виклики вертають true:
-Array.isArray([]);
-Array.isArray([1]);
-Array.isArray(new Array());
-Array.isArray(new Array('a', 'b', 'c', 'd'));
-Array.isArray(new Array(3));
-// Маловідомий факт: Array.prototype сам є масивом:
-Array.isArray(Array.prototype);
-
-//Всі наведені далі виклики вертають false:
-Array.isArray();
-Array.isArray({});
-Array.isArray(null);
-Array.isArray(undefined);
-Array.isArray(17);
-Array.isArray('Array');
-Array.isArray(true);
-Array.isArray(false);
-Array.isArray(new Uint8Array(32));
-Array.isArray({ __proto__: Array.prototype });
- -

instanceof проти isArray

- -

Для перевірки, чи є об'єкт екземпляром Array, метод Array.isArray підходить краще, ніж instanceof, тому що він працює між фреймами (iframes).

- -
var iframe = document.createElement('iframe');
-document.body.appendChild(iframe);
-xArray = window.frames[window.frames.length-1].Array;
-var arr = new xArray(1,2,3); // [1,2,3]
-
-// Коректна перевірка екземпляра Array
-Array.isArray(arr);  // true
-// Вважається небезпечним, бо не працює між фреймами
-arr instanceof Array; // false
- -

Запасний варіант (поліфіл)

- -

Наступний код, запущений перед будь-яким іншим кодом, створить метод Array.isArray(), якщо він недоступний початково.

- -
if (!Array.isArray) {
-  Array.isArray = function(arg) {
-    return Object.prototype.toString.call(arg) === '[object Array]';
-  };
-}
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES5.1', '#sec-15.4.3.2', 'Array.isArray')}}{{Spec2('ES5.1')}}Початкова виознака. Запроваджено у JavaScript 1.8.5.
{{SpecName('ES6', '#sec-array.isarray', 'Array.isArray')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.isarray', 'Array.isArray')}}{{Spec2('ESDraft')}}
- -

Підтримка веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.isArray")}}

- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/join/index.html b/files/uk/web/javascript/reference/global_objects/array/join/index.html deleted file mode 100644 index 116fb03bec..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/join/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Array.prototype.join() -slug: Web/JavaScript/Reference/Global_Objects/Array/join -tags: - - Array - - JavaScript - - Method - - Prototype - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/join ---- -
{{JSRef}}
- -

Метод join() створює та повертає рядок, що об'єднує всі елементи масиву (або подібного до масиву об'єкта), розділені комами або заданим роздільником. Якщо масив містить лише один елемент, то він буде повернений без роздільника.

- -
{{EmbedInteractiveExample("pages/js/array-join.html")}}
- - - -

Синтаксис

- -
arr.join([separator])
- -

Параметри

- -
-
separator {{optional_inline}}
-
Визначає рядок, що розділить кожну пару сусідніх елементів масиву. Роздільник перетворюється на рядок, якщо це необхідно. Якщо він пропущений, елементи масиву будуть розділені комою (","). Якщо separator є порожнім рядком, усі елементи будуть обʼєднані без жодних знаків між ними.
-
- -

Вертає

- -

Рядок з усіма обʼєднаними елементами масиву. Якщо arr.length дорівнює  0, буде повернений порожній рядок.

- -

Опис

- -

Рядкові представлення усіх елементів масиву поєднуються в один рядок.

- -
-

Якщо елемент дорівнює undefined або null, він перетворюється на порожній рядок.

-
- -

Приклади

- -

Обʼєднання масиву різними шляхами

- -

В наступному прикладі створюється масив a із трьома елементами, після чого поєднується чотири рази: використовуючи роздільник за замовчуванням, кому та пробіл, плюс, порожній рядок.

- -
var a = ['Вітер', 'Вода', 'Вогонь'];
-a.join();      // 'Вітер,Вода,Вогонь'
-a.join(', ');  // 'Вітер, Вода, Вогонь'
-a.join(' + '); // 'Вітер + Вода + Вогонь'
-a.join('');    // 'ВітерВодаВогонь'
- -

Обʼєднання подібного до масиву об'єкта

- -

В наступному прикладі подібний до масиву об'єкт (arguments) об'єднується шляхом виклику {{jsxref("Function.prototype.call")}} для Array.prototype.join.

- -
function f(a, b, c) {
-  var s = Array.prototype.join.call(arguments);
-  console.log(s); // '1,a,true'
-}
-f(1, 'a', true);
-//очікуваний результат: "1,a,true"
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Початкове визначення. Запроваджено у JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.4.4.5', 'Array.prototype.join')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.join', 'Array.prototype.join')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.join', 'Array.prototype.join')}}{{Spec2('ESDraft')}}
- -

Підтримка веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.join")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/keys/index.html b/files/uk/web/javascript/reference/global_objects/array/keys/index.html deleted file mode 100644 index d631dea894..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/keys/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Array.prototype.keys() -slug: Web/JavaScript/Reference/Global_Objects/Array/keys -tags: - - ECMAScript 2015 - - JavaScript - - Method - - Prototype - - Довідка - - Масив -translation_of: Web/JavaScript/Reference/Global_Objects/Array/keys ---- -
{{JSRef}}
- -

Метод keys() вертає новий об'єкт перебирача ключів (індексів) масиву.

- - - -

{{EmbedInteractiveExample("pages/js/array-keys.html")}}

- - - - - -

Синтаксис

- -
arr.keys()
- -

Вертає

- -

Новий об'єкт перебирача {{jsxref("Array")}}.

- -

Приклади

- -

Перебирач ключів розрідженого масиву не оминає прогалин

- -
var arr = ['a', , 'c'];
-var sparseKeys = Object.keys(arr);
-var denseKeys = [...arr.keys()];
-console.log(sparseKeys);  // виводить ['0', '2']
-console.log(denseKeys);   // виводить [0, 1, 2]
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ES2015')}}Початкова виознака.
{{SpecName('ESDraft', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ESDraft')}}
- -

Підтримка веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.keys")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/lastindexof/index.html b/files/uk/web/javascript/reference/global_objects/array/lastindexof/index.html deleted file mode 100644 index 97ae6e5457..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/lastindexof/index.html +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Array.prototype.lastIndexOf() -slug: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf -tags: - - Array - - ECMAScript5 - - JavaScript - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf ---- -
{{JSRef}}
- -

Метод lastIndexOf() повертає останній індекс, за яким заданий елемент було знайдено у масиві, або -1, якщо елемент не знайдено. Пошук відбувається в зворотному порядку, починаючи з індексу fromIndex.

- -
{{EmbedInteractiveExample("pages/js/array-lastindexof.html")}}
- - - -

Синтаксис

- -
arr.lastIndexOf(searchElement[, fromIndex])
-
- -

Параметри

- -
-
searchElement
-
Елемент, який потрібно знайти у масиві.
-
fromIndex {{optional_inline}}
-
Індекс, з якого починається пошук у зворотному порядку. За замовченням дорівнює довжині масиву мінус один (arr.length - 1), тобто пошук відбуватиметься у всьому масиві. Якщо індекс більше або дорівнює довжині масиву, пошук відбуватиметься у всьому масиві. Якщо індекс є від'ємним, він вважається відступом від кінця масиву. Зверніть увагу, що навіть якщо індекс є від'ємним, пошук все одно відбувається з кінця масиву. Якщо обчислений індекс є від'ємним, повертається -1, тобто пошук не відбувається.
-
- -

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

- -

Останній індекс елемента у масиві; -1, якщо елемент не знайдений.

- -

Опис

- -

Метод lastIndexOf порівнює searchElement з елементами масиву, використовуючи строгу рівність (метод, що використовує оператор === або потрійне дорівнює).

- -

Приклади

- -

Використання lastIndexOf

- -

Наступний приклад використовує lastIndexOf, щоб знайти значення у масиві.

- -
var numbers = [2, 5, 9, 2];
-numbers.lastIndexOf(2);     // 3
-numbers.lastIndexOf(7);     // -1
-numbers.lastIndexOf(2, 3);  // 3
-numbers.lastIndexOf(2, 2);  // 0
-numbers.lastIndexOf(2, -2); // 0
-numbers.lastIndexOf(2, -1); // 3
-
- -

Знаходження всіх позицій входжень елемента

- -

Наступний приклад використовує lastIndexOf, щоб знайти всі індекси елемента у заданому масиві, використовуючи {{jsxref("Array.prototype.push", "push")}}, щоб додати їх до іншого масиву по мірі знаходження.

- -
var indices = [];
-var array = ['a', 'b', 'a', 'c', 'a', 'd'];
-var element = 'a';
-var idx = array.lastIndexOf(element);
-while (idx != -1) {
-  indices.push(idx);
-  idx = (idx > 0 ? array.lastIndexOf(element, idx - 1) : -1);
-}
-
-console.log(indices);
-// [4, 2, 0]
-
- -

Зверніть увагу, що ми маємо окремо обробити випадок idx == 0, тому що елемент завжди буде знайдений, незважаючи на параметр  fromIndex, якщо це перший елемент масиву. В цьому відмінність від методу {{jsxref("Array.prototype.indexOf", "indexOf")}}.

- -

Поліфіл

- -

Метод lastIndexOf був доданий до стандарту ECMA-262 у 5-й версії; таким чином, він може не бути присутній в інших реалізаціях стандарту. Ви можете обійти цю проблему, вставивши наступний код на початку ваших скриптів, це дозволить використовувати lastIndexOf у реалізаціях, які не підтримують його початково. Цей алгоритм є саме тим, що зазначений у 5-й версії ECMA-262, за умови, що {{jsxref("Object")}}, {{jsxref("TypeError")}}, {{jsxref("Number")}}, {{jsxref("Math.floor")}}, {{jsxref("Math.abs")}} та {{jsxref("Math.min")}} мають свої початкові значення.

- -
// Функціональні кроки ECMA-262, версії 5, 15.4.4.15
-// Довідка: http://es5.github.io/#x15.4.4.15
-if (!Array.prototype.lastIndexOf) {
-  Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) {
-    'use strict';
-
-    if (this === void 0 || this === null) {
-      throw new TypeError();
-    }
-
-    var n, k,
-      t = Object(this),
-      len = t.length >>> 0;
-    if (len === 0) {
-      return -1;
-    }
-
-    n = len - 1;
-    if (arguments.length > 1) {
-      n = Number(arguments[1]);
-      if (n != n) {
-        n = 0;
-      }
-      else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) {
-        n = (n > 0 || -1) * Math.floor(Math.abs(n));
-      }
-    }
-
-    for (k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k >= 0; k--) {
-      if (k in t && t[k] === searchElement) {
-        return k;
-      }
-    }
-    return -1;
-  };
-}
-
- -

Знову ж таки, зауважте, що ця реалізація прагне повної сумісності з lastIndexOf у Firefox на рушії JavaScript SpiderMonkey, в тому числі у декількох можливих граничних ситуаціях. Якщо ви плануєте використовувати її у застосунках з реального життя, то можете обраховувати from менш складним кодом, якщо знехтуєте цими ситуаціями.

- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES5.1', '#sec-15.4.4.15', 'Array.prototype.lastIndexOf')}}{{Spec2('ES5.1')}}Початкове визначення. Реалізоване у JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.lastIndexOf")}}

-
- -

Примітки щодо сумісності

- - - -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/length/index.html b/files/uk/web/javascript/reference/global_objects/array/length/index.html deleted file mode 100644 index c407dc290b..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/length/index.html +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: array.length -slug: Web/JavaScript/Reference/Global_Objects/Array/length -tags: - - Array - - JavaScript - - Property - - Властивість - - Масив -translation_of: Web/JavaScript/Reference/Global_Objects/Array/length ---- -
{{JSRef}}
- -

Властивість length об'єкта, який є екземпляром типу Array, встановлює або повертає кількість елементів у цьому масиві. Значення є цілим беззнаковим 32-бітним числом, що завжди є більшим за найбільший індекс у масиві.

- -

{{EmbedInteractiveExample("pages/js/array-length.html")}}

- - - -

Опис

- -

Значенням властивості length є ціле додатне число, менше за 2 в степені 32 (232).

- -
var namelistA = new Array(4294967296); //2 в степені 32 = 4294967296
-var namelistC = new Array(-100) //від'ємне число
-
-console.log(namelistA.length); //RangeError: Invalid array length
-console.log(namelistC.length); //RangeError: Invalid array length
-
-var namelistB = [];
-namelistB.length = Math.pow(2,32)-1; //встановити довжину масиву меншу, ніж 2 в степені 32
-console.log(namelistB.length);
-
-//4294967295
- -

Ви можете присвоїти значення властивості length, щоб скоротити масив. Коли ви розширюєте масив, змінюючи його довжину (властивість length), збільшується кількість фактичних елементів; наприклад, якщо ви присвоїли length 3, коли елементів насправді 2, масив тепер містить 3 елементи, в результаті третій є неітерабельним порожнім елементом.

- -
var arr = [1, 2];
-console.log(arr);
-// [ 1, 2 ]
-
-arr.length = 5; // встановити довжину 5, маючи 2 елементи.
-console.log(arr);
-// [ 1, 2, <3 порожні елементи> ]
-
-arr.forEach(element => console.log(element));
-// 1
-// 2
- -

Таким чином, поле length не обов'язково вказує на кількість визначених значень у масиві. Дивіться також Зв'язок між length та числовими властивостями.

- -

{{js_property_attributes(1, 0, 0)}}

- - - -

Приклади

- -

Циклічне проходження по масиву

- -

В наступному прикладі, проходження по масиву numbers відбувається зважаючи на властивість length. Значення кожного елементу подвоюється.

- -
var numbers = [1, 2, 3, 4, 5];
-
-for (var i = 0; i < numbers.length; i++) {
-  numbers[i] *= 2;
-}
-// numbers тепер [2, 4, 6, 8, 10]
-
- -

Скорочення масиву

- -

Наступний приклад скорочує масив statesUS до довжини 3, якщо його поточна довжина більша, ніж 3.

- -
var numbers = [1, 2, 3, 4, 5];
-
-if (numbers.length > 3) {
-  numbers.length = 3;
-}
-
-console.log(numbers); // [1, 2, 3]
-console.log(numbers.length); // 3
- -

Створення порожнього масиву фіксованої довжини

- -
var numbers = [];
-numbers.length = 10;
-console.log(numbers); // [empty × 10]
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES1')}}{{Spec2('ES1')}}Початкове визначення.
{{SpecName('ES5.1', '#sec-15.4.5.2', 'Array.length')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-properties-of-array-instances-length', 'Array.length')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}}{{Spec2('ESDraft')}}
- -

Сумісність із браузерами

- - - -

{{Compat("javascript.builtins.Array.length")}}

- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/map/index.html b/files/uk/web/javascript/reference/global_objects/array/map/index.html deleted file mode 100644 index 2c71a1fe6f..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/map/index.html +++ /dev/null @@ -1,349 +0,0 @@ ---- -title: Array.prototype.map() -slug: Web/JavaScript/Reference/Global_Objects/Array/map -tags: - - Array - - ECMAScript5 - - JavaScript - - Масив - - метод - - поліфіл - - прототип -translation_of: Web/JavaScript/Reference/Global_Objects/Array/map ---- -
{{JSRef}}
- -

Метод map() створює новий масив з результатами виклику наданої функції на кожному елементі масиву, який викликав метод.

- -

{{EmbedInteractiveExample("pages/js/array-map.html")}}

- - - -

Синтаксис

- -
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
-    // Повернути елемент нового масиву new_array
-}[, thisArg])
- -

Параметри

- -
-
callback
-
Функція, яка повертає елемент нового масиву. Приймає три аргументи:
-
-
-
currentValue
-
Поточний елемент масиву.
-
index{{optional_inline}}
-
Індекс поточного елементу масиву
-
array{{optional_inline}}
-
Сам масив, на якому був викликаний map.
-
-
-
thisArg{{optional_inline}}
-
Значення, що буде використане як this при виконанні callback.
-
- -

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

- -

Новий масив, кожен елемент якого є результатом функції callback.

- -

Опис

- -

Метод map викликає передану callback-функцію один раз для кожного елементу масиву, в заданому порядку, та створює новий масив з результатів. callback викликаться тільки для індексів яким відповідають значення, включно з undefined. Функція не викликається для елеметів значення яких відсутні (мається на увазі, індекси які не були явно задані, які були видалені або яким не було присвоєне значення).

- -

Остільки map створює новий масив, викликати його, якщо ви не збираєтесь використовувати повернений масив, є антишаблоном; скористайтесь натомість forEach або for-of. Ознаки того, що вам не підходить метод map: А) Ви не використовуєте масив, який він повертає, і/або Б) Ви не повертаєте значення у функції callback.

- -

callback викликається з трьома аргументами: значення елемента, індекс елемента, та масив на якому операцію було викликано.

- -

Якщо thisArg параметр переданий в map, він буде використовуватись як ключове слово this  для callback-функції. В іншому випадку, значення {{jsxref("undefined")}} буде використане як this. Значення this, яке спостерігається в callback-функції, в кінцевому рахунку визначається згідно звичайних правил для визначення this, видимого з функції.

- -

map не змінює масив, на якому був викликаний (хоча callback, якщо був викликаний, може змінити).

- -

Діапазон елементів, які обробляє метод map, визначений до того як callback-функція буде визвана вперше. Елементи які будуть додані до масиву після виклику map, не будуть оброблені callback-функцією. Якщо існуючі в масиві елементи змінені або видалені, їхні значення при потраплянні в callback-функцію, будуть такими якими вони є на той час коли map обробляє їх. Елементи які були видалені до і після того як map був визваний, ігноруються. 

- -

Згідно з алгоритмом, визначеним у специфікації, якщо масив на якому було викликано map, розріджений, то масив на виході теж буде розрідженим, залишаючи ті ж самі індекси пустими.

- -

Приклади

- -

Перетворення масиву з числами в масив квадратних коренів

- -

Наступний код бере масив з числами і створює новий масив, який складається з квадратних коренів чисел з першого масиву.

- -
var numbers = [1, 4, 9];
-var roots = numbers.map(function(num) {
-return Math.sqrt(num)
-});
-// roots тепер [1, 2, 3]
-// numbers залишається [1, 4, 9]
-
- -

Використання map для переформатування об'єктів в масиві

- -

Наступний код використовує масив з об'єктами щоб створити новий масив з переформатованими об'єктами.

- -
var kvArray = [{key:1, value:10},
-               {key:2, value:20},
-               {key:3, value: 30}];
-
-var reformattedArray = kvArray.map(obj =>{
-   var rObj = {};
-   rObj[obj.key] = obj.value;
-   return rObj;
-});
-// reformattedArray тепер [{1:10}, {2:20}, {3:30}],
-
-// kvArray залишається:
-// [{key:1, value:10},
-//  {key:2, value:20},
-//  {key:3, value: 30}]
-
- -

Перетворення масиву чисел використовуючи функцію з аргументом

- -

Наступний код показує як map працює коли функція що потребує один аргумент, використовує його.  Аргумент буде автоматично присвоєний з кожного елементу масиву коли map буде проходитись по оригінальному масиву..

- -
var numbers = [1, 4, 9];
-var doubles = numbers.map(function(num) {
-  return num * 2;
-});
-
-// doubles тепер [2, 8, 18]
-// numbers залишається [1, 4, 9]
-
- -

Загальне використання map

- -

Цей приклад показує як використовувати map на рядках ({{jsxref("String")}}) щоб отримати масив байтів в ASCII кодуванні яке відображає значення літер:

- -
var map = Array.prototype.map;
-var a = map.call('Hello World', function(x) {
-   return x.charCodeAt(0);
-});
-// a тепер дорівнює [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
-
- -

Загальне використання map з querySelectorAll

- -

Даний приклад показує, як виконати перебір набору об'єктів, отриманих методом querySelectorAll. Тому що метод querySelectorAll повертає NodeList, який є колекцією об'єктів.

- -

У даному випадку ми повертаємо значення всіх вибраних опцій на екрані:

- -
var elems = document.querySelectorAll('select option:checked');
-var values = Array.prototype.map.call(elems, function(obj) {
-  return obj.value;
-});
-
- -

Це простіше зробити методом {{jsxref("Array.from()")}}.

- -

Хитрий спосіб використання

- -

(натхненний цим блог-постом)

- -

Загальноприйнято використовувати функцію callback з одним аргументом (елемент по якому проходиться функція). Деякі функції також використовуються з одним аргументом, хоча можуть приймати і більше додаткових аргументів, що не є обов'язковими. Це може призводити до неочікуваної поведінки.

- -

Розглянемо:

- -
["1", "2", "3"].map(parseInt);
- -

Хоча можна було б очікувати [1, 2, 3], справжнім результатом буде [1, NaN, NaN].

- -

Метод parseInt часто використовується з одним аргументом, але приймає два. Перший - це вираз, а другий - основа системи числення для функції зворотного виклику. Array.prototype.map передає 3 аргументи:

- - - -

Третій аргумент ігнорується методом parseInt, але не другий, звідси й можлива плутанина. Ось стислий огляд кроків перебору:

- -
// parseInt(string, radix) -> map(parseInt(value, index))
-/*  first iteration (index is 0): */ parseInt("1", 0); // 1
-/* second iteration (index is 1): */ parseInt("2", 1); // NaN
-/*  third iteration (index is 2): */ parseInt("3", 2); // NaN
- -

Поговоримо про рішення.

- -
function returnInt(element) {
-  return parseInt(element, 10);
-}
-
-['1', '2', '3'].map(returnInt); // [1, 2, 3]
-// Результатом є масив чисел (як і очікувалось)
-
-// Те саме, але з використанням лаконічного стрілкового синтаксису
-['1', '2', '3'].map( str => parseInt(str) );
-
-// Простіший спосіб досягти вищевказаного
-['1', '2', '3'].map(Number); // [1, 2, 3]
-
-// На відміну від parseInt(), Number() також поверне десятковий або експоненціальний запис:
-['1.1', '2.2e2', '3e300'].map(Number); // [1.1, 220, 3e+300]
-// Для порівняння, якщо використати parseInt() для попереднього масиву:
-['1.1', '2.2e2', '3e300'].map( str => parseInt(str) ); // [1, 2, 3]
- -

Ще один варіант результату метода map, що викликається з parseInt в якості параметра, виглядає наступним чином:

- -
var xs = ['10', '10', '10'];
-
-xs = xs.map(parseInt);
-
-console.log(xs);
-// Результат 10,NaN,2 може бути неочікуваним, з огляду вищеописане.
- -

Масив містить значення undefined

- -

Коли повертається undefined або нічого не повертається:

- -
var numbers = [1, 2, 3, 4];
-var filteredNumbers = numbers.map(function(num, index) {
-  if(index < 2) {
-     return num;
-  }
-});
-// filteredNumbers дорівнює [1, 2, undefined, undefined]
-// numbers досі дорівнює [1, 2, 3, 4]
- -

Поліфіл

- -

Метод map був доданий до ECMA-262 стандарту в 5-тій редакції; тому він може бути присутнім не у всіх реалізаціях стандарту. Ви можете обійти це, вставляючи наступний код на початок вашого скритпу, дозволяючи використовувати map в реалізаціях які ще його не підтримують. Цей алгоритм є точно таким який вказаний в  ECMA-262, 5му виданні, передбачаючи що {{jsxref("Object")}}, {{jsxref("TypeError")}}, і {{jsxref("Array")}} мають свої власні значення  і що callback.call обчислює початкове значення {{jsxref("Function.prototype.call")}}.

- -
// Функціональні кроки ECMA-262, версія 5, 15.4.4.19
-// Довідка: http://es5.github.io/#x15.4.4.19
-if (!Array.prototype.map) {
-
-  Array.prototype.map = function(callback, thisArg) {
-
-    var T, A, k;
-
-    if (this == null) {
-      throw new TypeError(' this is null or not defined');
-    }
-
-    // 1. Нехай O дорівнює результату виклику ToObject з |this|
-    //    в якості аргументу.
-    var O = Object(this);
-
-    // 2. Нехай lenValue дорівнює результату виклику внутрішнього методу O
-    //    Get з аргументом "length".
-    // 3. Нехай len дорівнює ToUint32(lenValue).
-    var len = O.length >>> 0;
-
-    // 4. Якщо IsCallable(callback) дорівнює false, викинути виняток TypeError.
-    // Див.: http://es5.github.com/#x9.11
-    if (typeof callback !== 'function') {
-      throw new TypeError(callback + ' is not a function');
-    }
-
-    // 5. Якщо надано thisArg, нехай T дорівнює thisArg; інакше нехай T дорівнює undefined.
-    if (arguments.length > 1) {
-      T = thisArg;
-    }
-
-    // 6. Нехай A дорівнює новому масиву, створеному виразом new Array(len),
-    //    де Array - це стандартний вбудований конструктор з таким ім'ям,
-    //    а len дорівнює значенню len.
-    A = new Array(len);
-
-    // 7. Нехай k дорівнює 0
-    k = 0;
-
-    // 8. Повторювати, доки k < len
-    while (k < len) {
-
-      var kValue, mappedValue;
-
-      // а. Нехай Pk дорівнює ToString(k).
-      //   Цей метод неявно застосовується до лівого операнда оператора in
-      // б. Нехай kPresent дорівнює результату виклику внутрішнього методу O
-      //    HasProperty з аргументом Pk.
-      //   Цей крок можна об'єднати з в
-      // в. Якщо kPresent дорівнює true, тоді
-      if (k in O) {
-
-        // і. Нехай kValue дорівнює результату виклику внутрішнього методу O
-        //    Get з аргументом Pk.
-        kValue = O[k];
-
-        // ii. Нехай mappedValue дорівнює результату виклику внутрішнього
-        //     методу callback Call з T у якості значення this та списком
-        //     аргументів, що містить kValue, k та O.
-        mappedValue = callback.call(T, kValue, k, O);
-
-        // iii. Викликати внутрішній метод A DefineOwnProperty з аргументами
-        // Pk, Property Descriptor
-        // { Value: mappedValue,
-        //   Writable: true,
-        //   Enumerable: true,
-        //   Configurable: true },
-        // та false.
-
-        // У переглядачах, що підтримують Object.defineProperty, використовуйте:
-        // Object.defineProperty(A, k, {
-        //   value: mappedValue,
-        //   writable: true,
-        //   enumerable: true,
-        //   configurable: true
-        // });
-
-        // Для найкращої підтримки переглядачів, використовуйте:
-        A[k] = mappedValue;
-      }
-      // г. Збільшити k на 1.
-      k++;
-    }
-
-    // 9. повернути A
-    return A;
-  };
-}
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES5.1', '#sec-15.4.4.19', 'Array.prototype.map')}}{{Spec2('ES5.1')}} -

Початкове визначення. Реалізоване в JavaScript 1.6.

-
{{SpecName('ES6', '#sec-array.prototype.map', 'Array.prototype.map')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.map', 'Array.prototype.map')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.map")}}

- -

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

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/of/index.html b/files/uk/web/javascript/reference/global_objects/array/of/index.html deleted file mode 100644 index 457b8696bf..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/of/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Array.of() -slug: Web/JavaScript/Reference/Global_Objects/Array/of -tags: - - Array - - ECMAScript6 - - Масив -translation_of: Web/JavaScript/Reference/Global_Objects/Array/of ---- -
{{JSRef}}
- -

Метод Array.of() створює новий екземпляр Array з заданої кількості аргументів, незважаючи на кількість або тип аргументів.

- -

Різниця між Array.of() та конструктором Array полягає у поводженні з цілочисельними аргументами: Array.of(7) створює масив з єдиним елементом 7, в той час як Array(7) створює порожній масив з величиною властивості length, що дорівнює 7 (Зауважте: мається на увазі масив з 7 порожніми елементами, а не елементами, що дорівнюють undefined).

- -
Array.of(7);       // [7]
-Array.of(1, 2, 3); // [1, 2, 3]
-
-Array(7);          // масив з 7-ми порожніх елементів
-Array(1, 2, 3);    // [1, 2, 3]
-
- -

Синтаксис

- -
Array.of(element0[, element1[, ...[, elementN]]])
- -

Параметри

- -
-
elementN
-
Елементи, з яких треба створити масив.
-
- -

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

- -

Новий екземпляр {{jsxref("Array")}}.

- -

Опис

- -

Ця функція є частиною стандарту ECMAScript 2015. Щоб дізнатися більше, дивіться проект Array.of та Array.from та поліфіл Array.of.

- -

Приклади

- -
Array.of(1);         // [1]
-Array.of(1, 2, 3);   // [1, 2, 3]
-Array.of(undefined); // [undefined]
-
- -

Поліфіл

- -

Виконання цього коду перед будь-яким іншим кодом створить метод Array.of(), якщо він не підтримується початково.

- -
if (!Array.of) {
-  Array.of = function() {
-    return Array.prototype.slice.call(arguments);
-    // Або
-    let vals = []
-    for(let prop in arguments){
-        vals.push(arguments[prop])
-    }
-    return vals.slice()
-}
- -

Специфікації

- - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-array.of', 'Array.of')}}{{Spec2('ES2015')}}Початкове визначення.
{{SpecName('ESDraft', '#sec-array.of', 'Array.of')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.of")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/pop/index.html b/files/uk/web/javascript/reference/global_objects/array/pop/index.html deleted file mode 100644 index 7be2a9f433..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/pop/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Array.prototype.pop() -slug: Web/JavaScript/Reference/Global_Objects/Array/pop -tags: - - JavaScript - - Масив - - метод - - прототип -translation_of: Web/JavaScript/Reference/Global_Objects/Array/pop ---- -
{{JSRef}}
- -

Метод pop() видаляє останній елемент масиву та повертає цей елемент.

- -

{{EmbedInteractiveExample("pages/js/array-pop.html")}}

- - - -

Синтаксис

- -
arr.pop()
-
- -

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

- -

Видалений елемент масиву; {{jsxref("undefined")}}, якщо масив був порожній.

- -

Опис

- -

Метод pop видаляє останній елемент масиву та повертає його.

- -

Метод pop є навмисно загальним; він може бути {{jsxref("Function.call", "викликаний", "", 1)}} або {{jsxref("Function.apply", "застосований", "", 1)}} до об'єктів, схожих на масиви. Об'єкти, які не мають властивості length, що відображає останній елемент в серії послідовних числових властивостей, які починаються з нуля, можуть поводити себе неправильно.

- -

Якщо ви викличите pop() на порожньому масиві, він поверне {{jsxref("undefined")}}.

- -

Метод {{jsxref("Array.prototype.shift()")}} має схожу з pop поведінку, але застосовується до першого елемента масиву.

- -

Приклади

- -

Видалення останнього елемента масиву

- -

Наступний код створює масив myFish , який містить чотири елементи, а потім видаляє останній елемент.

- -
var myFish = ['янгол', 'клоун', 'мандарин', 'осетер'];
-
-console.log(myFish); // ['янгол', 'клоун', 'мандарин', 'осетер']
-
-var popped = myFish.pop();
-
-console.log(myFish); // ['янгол', 'клоун', 'мандарин' ]
-
-console.log(popped); // 'осетер'
-
- -

Використання apply( ) або call ( ) на подібних до масиву об'єктах

- -

Наступний код створює подібний до масиву об'єкт myFish, який має чотири елементи та параметр довжини length, потім видаляє його останній елемент та зменшує параметр length.

- -
var myFish = {0:'янгол', 1:'клоун', 2:'мандарин', 3:'осетер', length: 4};
-
-var popped = Array.prototype.pop.call(myFish); //такий самий синтаксис для apply( )
-
-console.log(myFish); // {0:'янгол', 1:'клоун', 2:'мандарин', length: 3}
-
-console.log(popped); // 'осетер'
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментарі
{{SpecName('ES3')}}{{Spec2('ES3')}}Первинне визначення. Реалізовано у JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.6', 'Array.prototype.pop')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.pop', 'Array.prototype.pop')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.pop', 'Array.prototype.pop')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.pop")}}

- -
- -

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

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/push/index.html b/files/uk/web/javascript/reference/global_objects/array/push/index.html deleted file mode 100644 index af185f399f..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/push/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: Array.prototype.push() -slug: Web/JavaScript/Reference/Global_Objects/Array/push -translation_of: Web/JavaScript/Reference/Global_Objects/Array/push ---- -
{{JSRef}}
- -

Метод push() додає один або більше елементів у кінець масиву та повертає нову довжину масиву.

- -
{{EmbedInteractiveExample("pages/js/array-push.html")}}
- - - -

Синтаксис

- -
arr.push(element1[, ...[, elementN]])
- -

Параметри

- -
-
elementN
-
Елементи, що додаються у кінець масиву.
-
- -

Повернене значення

- -

Нова {{jsxref("Array.length", "length")}} властивість об'єкта, на якому був визваний цей метод.

- -

Опис

- -

Метод push додає значення у масив.

- -

push було навмисно створено загальним методом. Він може використовуватися з {{jsxref("Function.call", "call()")}} або {{jsxref("Function.apply", "apply()")}} на об'єктах, подібних до масивів. Метод push спирається на властивість length, щоб розуміти, з якого місця починати додавання заданих значень. Якщо властивість length неможливо перетворити на число, використовується індекс рівний 0. До цього також належить випадок, коли властивості length взагалі не існує, y цьому разі length також буде створено.

- -

Хоча {{jsxref("Global_Objects/String", "strings", "", 1)}} - це найближчі, масивоподібні об'єкти, з ними неможливо використовувати цей метод, оскільки рядки є незмінними.  Аналогічно до найближчого, масивоподібного об'єкта {{jsxref("Functions/arguments", "arguments", "", 1)}}.

- -

Приклади

- -

Додавання елементів у масив

- -

Наступний приклад створює sports масив з двома елементами, потім у нього додаються еще два елементи. Змінна total містить нову довжину масиву.

- -
var sports = ['soccer', 'baseball'];
-var total = sports.push('football', 'swimming');
-
-console.log(sports); // ['soccer', 'baseball', 'football', 'swimming']
-console.log(total);  // 4
-
- -

Поєднання двох масивів

- -

Цей приклад використовує {{jsxref("Function.apply", "apply()")}} для того, щоб запушити усі елементи з другого масиву.

- -

Не використовуйте цей метод, якщо другий масив (moreVegs у цьому прикладі) занадто великий, оскільки максимальна кількість параметрів, які може вмістити одна функція обмежена, як доводить це практика. Дивиться {{jsxref("Function.apply", "apply()")}} для отримання більш докладної інформації.

- -
var vegetables = ['parsnip', 'potato'];
-var moreVegs = ['celery', 'beetroot'];
-
-// Merge the second array into the first one
-// Equivalent to vegetables.push('celery', 'beetroot');
-Array.prototype.push.apply(vegetables, moreVegs);
-
-console.log(vegetables); // ['parsnip', 'potato', 'celery', 'beetroot']
-
- -

Використання об'єкта у масивоподібний спосіб

- -

Як зазначено вище, push було навмисно створено загаліним методом, і це може зіграти нам на користь. Array.prototype.push добре працює на об'єктах, як це показує наш приклад. Зауважте, що ми не створюємо масив для зберігання колекції об'єктів. Натомість ми зберігаємо колекцію у самому об'єкті та використовуємо метод call на Array.prototype.push, щоб змусити його думати, начебто ми використовуємо його на масиві, і це працює, завдяки тому, що JavaScript дозволяє нам встановлювати контекст використання, як нам зручно.

- -
var obj = {
-    length: 0,
-
-    addElem: function addElem(elem) {
-        // obj.length is automatically incremented
-        // every time an element is added.
-        [].push.call(this, elem);
-    }
-};
-
-// Let's add some empty objects just to illustrate.
-obj.addElem({});
-obj.addElem({});
-console.log(obj.length);
-// → 2
-
- -

Зверніть увагу, що obj хоч і не є масивом, метод push успішно збільшив його властивість length так само, наче б ми мали справу зі справжнім масивом.

- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціїСтатусКоментар
{{SpecName('ES3')}}{{Spec2('ES3')}}Початкове визначення. Реалізоване в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.7', 'Array.prototype.push')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.push', 'Array.prototype.push')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.push', 'Array.prototype.push')}}{{Spec2('ESDraft')}}
- -

Сумісність з браузерами

- -
- - -

{{Compat("javascript.builtins.Array.push")}}

-
- -

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

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/reduce/index.html b/files/uk/web/javascript/reference/global_objects/array/reduce/index.html deleted file mode 100644 index 0f9ce6e0e2..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/reduce/index.html +++ /dev/null @@ -1,578 +0,0 @@ ---- -title: Array.prototype.reduce() -slug: Web/JavaScript/Reference/Global_Objects/Array/Reduce -tags: - - ECMAScript 5 - - JavaScript - - Reduce - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/Reduce ---- -
{{JSRef}}
- -

Метод reduce() виконує функцію reducer (функцію вказуєте ви) для кожного елемента масиву та повертає єдине значення.

- -
{{EmbedInteractiveExample("pages/js/array-reduce.html")}}
- - - -

Функія reducer отримує чотири параметри:

- -
    -
  1. Accumulator (acc) - Акумулятор
  2. -
  3. Current Value (cur) - Поточне значення
  4. -
  5. Current Index (idx) - Поточний індекс
  6. -
  7. Source Array (src) - Вхідний масив
  8. -
- -

Функція reducer повертає значення та присовює його акумулятору. Значення аккумулятора запам'ятовується через усі ітерації і повертається наприкінці як єдиний результат.

- -

Синтакс

- -
arr.reduce(callback( accumulator, currentValue[, index[, array]] )[,
-initialValue])
- -

Параметри

- -
-
callback
-
Фунція, що виконується з кожним елементом масиву (приймає 4 аргументи): -
-
accumulator
-
Акумулює значення, які повертає callback. В акумуляторі зберігається попереднє значення результату виклику callback функції або initialValue, якщо воно було надано (дивись нижче).
-
currentValue
-
Поточний елемент, над яким виконується дія.
-
currentIndex{{optional_inline}}
-
Індекс поточного елемента, над яким виконується дія. Починається із 0 індексу, якщо, було надано значення initialValue, інакше з 1 .
-
array{{optional_inline}}
-
Масив, для якого було викликано reduce().
-
-
-
initialValue{{optional_inline}}
-
Значення, що буде використане як перший аргумент під час виклику callback функції. Якщо це значення не було задане, буде використано перший елемент масиву. Виклик reduce() на порожньому масиві без вказання initial value призведе до помилки.
-
- -

Значення, яке буде повернене

- -

Значення, що зберігається в акумуляторі після останньої ітерації.

- -

Опис

- -

reduce() виконує callback функцію один раз для кожного елемента масиву за виключенням дірок (порожніх елементів). Функція отримує чотири аргументи:

- - - -

При першому виклику callback функції accumulator і currentValue можуть мати одне із двох значень. Якщо значення initialValue задане при виклику reduce(), значення accumulator дорівнюватиме значенню initialValue, а currentValue дорівнюватиме першому елементу масиву. Якщо значення initialValue не задане, accumulator буде рівним першому елементу масиву, а currentValue -- другому.

- -
-

Примітка: Якщо значення initialValue не задане, reduce() виконуватиме callback функцію починаючи з індексу 1, пропустивши перший індекс. Якщо initialValue задане, виконання почнеться із 0-го індексу.

-
- -

Якщо масив порожній і значення initialValue не задане, буде створено помилку {{jsxref("TypeError")}}. Якщо масив складається тільки з одного елемента (незалежно від його позиції) і значення initialValue не задане, або якщо значення initialValue задане, але масив порожній, буде повернуто єдине наявне значення, а функція callback не буде викликана.

- -

Зазвичай безпечніше вказувати початкове значення (initialValue), адже без нього можливі три різні результати (див. приклад).

- -
var maxCallback = ( acc, cur ) => Math.max( acc.x, cur.x );
-var maxCallback2 = ( max, cur ) => Math.max( max, cur );
-
-// reduce() без initialValue
-[ { x: 22 }, { x: 42 } ].reduce( maxCallback ); // 42
-[ { x: 22 }            ].reduce( maxCallback ); // { x: 22 }
-[                      ].reduce( maxCallback ); // TypeError
-
-// map/reduce; краще рішення, працюватиме також для порожніх чи великих масивів
-[ { x: 22 }, { x: 42 } ].map( el => el.x )
-                        .reduce( maxCallback2, -Infinity );
-
- -

Як працює reduce()

- -

Нехай відбувся наступний виклик reduce():

- -
[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array) {
-  return accumulator + currentValue;
-});
-
- -

callback буде викликано чотири рази із наступними аргументами та значеннями, поверненими при кожному виклику:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
callbackaccumulatorcurrentValuecurrentIndexarrayповернене
- значення
перший виклик011[0, 1, 2, 3, 4]1
другий виклик122[0, 1, 2, 3, 4]3
третій виклик333[0, 1, 2, 3, 4]6
четвертий виклик644[0, 1, 2, 3, 4]10
- -

Значення, повернене reduce() буде значенням, отриманим при останньому виклику callback (10).

- -

The value returned by reduce() would be that of the last callback invocation (10).

- -

Можна також задати {{jsxref("Functions/Arrow_functions", "Arrow Function","",1)}} замість повної функції. Наступний код згенерує такий самий результат, як код у попередньому блоці.

- -
[0, 1, 2, 3, 4].reduce( (accumulator, currentValue, currentIndex, array) => accumulator + currentValue );
-
- -

Якщо початкове значення (initialValue) задати як другий аргумент функції reduce(), результат буде наступним:

- -
[0, 1, 2, 3, 4].reduce((accumulator, currentValue, currentIndex, array) => {
-    return accumulator + currentValue;
-}, 10);
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
callbackaccumulatorcurrentValuecurrentIndexarrayповернене значення
перший виклик1000[0, 1, 2, 3, 4]10
другий виклик1011[0, 1, 2, 3, 4]11
третій виклик1122[0, 1, 2, 3, 4]13
четвертий виклик1333[0, 1, 2, 3, 4]16
-

п'ятий виклик

-
1644[0, 1, 2, 3, 4]20
- -

Значення, повернене функцією reduce() у цьому випадку дорівнюватиме 20.

- -

Приклади

- -

Сума усіх елементів масиву

- -
var sum = [0, 1, 2, 3].reduce(function (accumulator, currentValue) {
-  return accumulator + currentValue;
-}, 0);
-// sum is 6
-
-
- -

Приклад вище, реалізований за допомогою arrow function:

- -
var total = [ 0, 1, 2, 3 ].reduce(
-  ( accumulator, currentValue ) => accumulator + currentValue,
-  0
-);
- -

Сума значень у масиві об'єктів

- -

Щоб підсумувати значення, що знаходяться у масиві об'єктів, Ви повинні вказати початкове значення для того, щоб для кожного із елементів була викликана Ваша функція.

- -
var initialValue = 0;
-var sum = [{x: 1}, {x:2}, {x:3}].reduce(function (accumulator, currentValue) {
-    return accumulator + currentValue.x;
-},initialValue)
-
-console.log(sum) // logs 6
-
- -

Також за допомогою arrow function: 

- -
var initialValue = 0;
-var sum = [{x: 1}, {x:2}, {x:3}].reduce(
-    (accumulator, currentValue) => accumulator + currentValue.x
-    ,initialValue
-);
-
-console.log(sum) // logs 6
- -

Сплюснути (flatten) масив масивів

- -

Сплющення (flattening) - процес, у результаті якого із масиву масивів отримуємо один масив, що містить елементи усіх вкладених масивів.

- -
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(
-  function(accumulator, currentValue) {
-    return accumulator.concat(currentValue);
-  },
-  []
-);
-// flattened is [0, 1, 2, 3, 4, 5]
-
- -

Також за допомогою arrow function:

- -
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(
-  ( accumulator, currentValue ) => accumulator.concat(currentValue),
-  []
-);
-
- -

Підрахунок кількості однакових значень у об'єкті

- -
var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
-
-var countedNames = names.reduce(function (allNames, name) {
-  if (name in allNames) {
-    allNames[name]++;
-  }
-  else {
-    allNames[name] = 1;
-  }
-  return allNames;
-}, {});
-// countedNames is:
-// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }
-
- -

Групування об'єктів за властивістю (property)

- -
var people = [
-  { name: 'Alice', age: 21 },
-  { name: 'Max', age: 20 },
-  { name: 'Jane', age: 20 }
-];
-
-function groupBy(objectArray, property) {
-  return objectArray.reduce(function (acc, obj) {
-    var key = obj[property];
-    if (!acc[key]) {
-      acc[key] = [];
-    }
-    acc[key].push(obj);
-    return acc;
-  }, {});
-}
-
-var groupedPeople = groupBy(people, 'age');
-// groupedPeople is:
-// {
-//   20: [
-//     { name: 'Max', age: 20 },
-//     { name: 'Jane', age: 20 }
-//   ],
-//   21: [{ name: 'Alice', age: 21 }]
-// }
-
- -

Bonding arrays contained in an array of objects using the spread operator and initialValue

- -
// friends - an array of objects
-// where object field "books" - list of favorite books
-var friends = [{
-  name: 'Anna',
-  books: ['Bible', 'Harry Potter'],
-  age: 21
-}, {
-  name: 'Bob',
-  books: ['War and peace', 'Romeo and Juliet'],
-  age: 26
-}, {
-  name: 'Alice',
-  books: ['The Lord of the Rings', 'The Shining'],
-  age: 18
-}];
-
-// allbooks - list which will contain all friends' books +
-// additional list contained in initialValue
-var allbooks = friends.reduce(function(accumulator, currentValue) {
-  return [...accumulator, ...currentValue.books];
-}, ['Alphabet']);
-
-// allbooks = [
-//   'Alphabet', 'Bible', 'Harry Potter', 'War and peace',
-//   'Romeo and Juliet', 'The Lord of the Rings',
-//   'The Shining'
-// ]
- -

Видалення повторюваних значень у масиві

- -
let arr = [1, 2, 1, 2, 3, 5, 4, 5, 3, 4, 4, 4, 4];
-let result = arr.sort().reduce((accumulator, current) => {
-    const length = accumulator.length
-    if (length === 0 || accumulator[length - 1] !== current) {
-        accumulator.push(current);
-    }
-    return accumulator;
-}, []);
-console.log(result); //[1,2,3,4,5]
-
- -

Запуск Promises у послідовності

- -
/**
- * Runs promises from array of functions that can return promises
- * in chained manner
- *
- * @param {array} arr - promise arr
- * @return {Object} promise object
- */
-function runPromiseInSequence(arr, input) {
-  return arr.reduce(
-    (promiseChain, currentFunction) => promiseChain.then(currentFunction),
-    Promise.resolve(input)
-  );
-}
-
-// promise function 1
-function p1(a) {
-  return new Promise((resolve, reject) => {
-    resolve(a * 5);
-  });
-}
-
-// promise function 2
-function p2(a) {
-  return new Promise((resolve, reject) => {
-    resolve(a * 2);
-  });
-}
-
-// function 3  - will be wrapped in a resolved promise by .then()
-function f3(a) {
- return a * 3;
-}
-
-// promise function 4
-function p4(a) {
-  return new Promise((resolve, reject) => {
-    resolve(a * 4);
-  });
-}
-
-const promiseArr = [p1, p2, f3, p4];
-runPromiseInSequence(promiseArr, 10)
-  .then(console.log);   // 1200
-
- -

Function composition enabling piping

- -
// Building-blocks to use for composition
-const double = x => x + x;
-const triple = x => 3 * x;
-const quadruple = x => 4 * x;
-
-// Function composition enabling pipe functionality
-const pipe = (...functions) => input => functions.reduce(
-    (acc, fn) => fn(acc),
-    input
-);
-
-// Composed functions for multiplication of specific values
-const multiply6 = pipe(double, triple);
-const multiply9 = pipe(triple, triple);
-const multiply16 = pipe(quadruple, quadruple);
-const multiply24 = pipe(double, triple, quadruple);
-
-// Usage
-multiply6(6); // 36
-multiply9(9); // 81
-multiply16(16); // 256
-multiply24(10); // 240
-
-
- -

write map using reduce

- -
if (!Array.prototype.mapUsingReduce) {
-  Array.prototype.mapUsingReduce = function(callback, thisArg) {
-    return this.reduce(function(mappedArray, currentValue, index, array) {
-      mappedArray[index] = callback.call(thisArg, currentValue, index, array);
-      return mappedArray;
-    }, []);
-  };
-}
-
-[1, 2, , 3].mapUsingReduce(
-  (currentValue, index, array) => currentValue + index + array.length
-); // [5, 7, , 10]
-
-
- -

Polyfill

- -
// Production steps of ECMA-262, Edition 5, 15.4.4.21
-// Reference: http://es5.github.io/#x15.4.4.21
-// https://tc39.github.io/ecma262/#sec-array.prototype.reduce
-if (!Array.prototype.reduce) {
-  Object.defineProperty(Array.prototype, 'reduce', {
-    value: function(callback /*, initialValue*/) {
-      if (this === null) {
-        throw new TypeError( 'Array.prototype.reduce ' +
-          'called on null or undefined' );
-      }
-      if (typeof callback !== 'function') {
-        throw new TypeError( callback +
-          ' is not a function');
-      }
-
-      // 1. Let O be ? ToObject(this value).
-      var o = Object(this);
-
-      // 2. Let len be ? ToLength(? Get(O, "length")).
-      var len = o.length >>> 0;
-
-      // Steps 3, 4, 5, 6, 7
-      var k = 0;
-      var value;
-
-      if (arguments.length >= 2) {
-        value = arguments[1];
-      } else {
-        while (k < len && !(k in o)) {
-          k++;
-        }
-
-        // 3. If len is 0 and initialValue is not present,
-        //    throw a TypeError exception.
-        if (k >= len) {
-          throw new TypeError( 'Reduce of empty array ' +
-            'with no initial value' );
-        }
-        value = o[k++];
-      }
-
-      // 8. Repeat, while k < len
-      while (k < len) {
-        // a. Let Pk be ! ToString(k).
-        // b. Let kPresent be ? HasProperty(O, Pk).
-        // c. If kPresent is true, then
-        //    i.  Let kValue be ? Get(O, Pk).
-        //    ii. Let accumulator be ? Call(
-        //          callbackfn, undefined,
-        //          « accumulator, kValue, k, O »).
-        if (k in o) {
-          value = callback(value, o[k], k, o);
-        }
-
-        // d. Increase k by 1.
-        k++;
-      }
-
-      // 9. Return accumulator.
-      return value;
-    }
-  });
-}
-
- -

If you need to support truly obsolete JavaScript engines that don't support Object.defineProperty(), it's best not to polyfill Array.prototype methods at all, as you can't make them non-enumerable.

- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.4.4.21', 'Array.prototype.reduce()')}}{{Spec2('ES5.1')}}Initial definition. Implemented in JavaScript 1.8.
{{SpecName('ES6', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}{{Spec2('ESDraft')}}
- -

Browser compatibility

- -
- - -

{{Compat("javascript.builtins.Array.reduce")}}

-
- -

See also

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/reduceright/index.html b/files/uk/web/javascript/reference/global_objects/array/reduceright/index.html deleted file mode 100644 index 2471147574..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/reduceright/index.html +++ /dev/null @@ -1,364 +0,0 @@ ---- -title: Array.prototype.reduceRight() -slug: Web/JavaScript/Reference/Global_Objects/Array/ReduceRight -tags: - - Array - - ECMAScript5 - - JavaScript - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/ReduceRight ---- -
{{JSRef}}
- -

Метод reduceRight() застосовує функцію до акумулятора та кожного елемента масиву (справа наліво), зменшуючи його до єдиного значення.

- -
{{EmbedInteractiveExample("pages/js/array-reduce-right.html")}}
- - - -

Дивіться також {{jsxref("Array.prototype.reduce()")}}, який виконується зліва направо.

- -

Синтаксис

- -
arr.reduceRight(callback(accumulator, currentValue[, index[, array]])[, initialValue])
- -

Параметри

- -
-
callback
-
Функція, яка виконується на кожному елементі масиву. Приймає чотири аргументи: -
-
accumulator
-
Значення, яке було повернене з попереднього виклику функції, або initialValue, якщо є. (Дивіться нижче.)
-
currentValue
-
Поточний елемент масиву, що опрацьовується.
-
index{{optional_inline}}
-
Індекс поточного елемента масиву.
-
array{{optional_inline}}
-
Масив, для якого було викликано reduceRight().
-
-
-
initialValue{{optional_inline}}
-
Значення, що використовується в якості акумулятора для першого виклику callback. Якщо початкового значення нема, то буде використаний та пропущений останній елемент масиву. Виклик reduce або reduceRight на порожньому масиві без початкового значення створить виняток TypeError.
-
- -

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

- -

Значення, що є результатом зменшення.

- -

Опис

- -

Метод reduceRight виконує функцію зворотного виклику один раз для кожного елемента у масиві, крім порожніх елементів, отримуючи чотири аргументи: початкове значення (або значення від попереднього виклику функції), значення поточного елемента, поточний індекс та масив, обхід якого виконується.

- -

Виклик функції callback у reduceRight виглядатиме десь так:

- -
array.reduceRight(function(accumulator, currentValue, index, array) {
-  // ...
-});
-
- -

Коли функція викликається вперше, accumulator та currentValue можуть мати одне з двох значень. Якщо значення initialValue було надане під час виклику reduceRight, тоді accumulator дорівнюватиме initialValue, а currentValue останньому елементу масиву. Якщо значення initialValue не визначено, тоді accumulator дорівнюватиме останньому елементу масиву, а currentValue передостанньому.

- -

Якщо масив порожній, а initialValue не надано, то буде викинуто виняток {{jsxref("TypeError")}}. Якщо масив має лише один елемент (незалежно від позиції), і немає значення initialValue, або якщо initialValue надано, але масив порожній, це єдине значення повернеться без виклику callback.

- -

Для прикладу, функція може виглядати так:

- -
[0, 1, 2, 3, 4].reduceRight(function(accumulator, currentValue, index, array) {
-  return accumulator + currentValue;
-});
-
- -

Функція зворотного виклику буде виконана чотири рази, аргументи та значення, які повертаються, наведені нижче:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
callbackaccumulatorcurrentValueindexarrayвертає
перший виклик433[0, 1, 2, 3, 4]7
другий виклик722[0, 1, 2, 3, 4]9
третій виклик911[0, 1, 2, 3, 4]10
четвертий виклик1000[0, 1, 2, 3, 4]10
- -

Значення, яке повертає reduceRight буде тим, яке вертає останній виклик callback (10).

- -

А якби ви надали значення initialValue, результат виглядав би так:

- -
[0, 1, 2, 3, 4].reduceRight(function(accumulator, currentValue, index, array) {
-  return accumulator + currentValue;
-}, 10);
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
callbackaccumulatorcurrentValueindexarrayвертає
перший виклик1044[0, 1, 2, 3, 4]14
другий виклик1433[0, 1, 2, 3, 4]17
третій виклик1722[0, 1, 2, 3, 4]19
четвертий виклик1911[0, 1, 2, 3, 4]20
п'ятий виклик2000[0, 1, 2, 3, 4]20
- -

Цього разу reduceRight, звісно, повернув би 20.

- -

Приклади

- -

Знайти суму елементів масиву

- -
var sum = [0, 1, 2, 3].reduceRight(function(a, b) {
-  return a + b;
-});
-// сума дорівнює 6
-
- -

Вирівняти масив масивів

- -
var flattened = [[0, 1], [2, 3], [4, 5]].reduceRight(function(a, b) {
-    return a.concat(b);
-}, []);
-// Результат [4, 5, 2, 3, 0, 1]
-
-
- -

Виконати послідовно набір асинхронних функцій з функціями зворотного виклику, щоб кожна передавала свій результат у наступну

- -
const waterfall = (...functions) => (callback, ...args) =>
-  functions.reduceRight(
-    (composition, fn) => (...results) => fn(composition, ...results),
-    callback
-  )(...args);
-
-const randInt = max => Math.floor(Math.random() * max)
-
-const add5 = (callback, x) => {
-  setTimeout(callback, randInt(1000), x + 5);
-};
-const mult3 = (callback, x) => {
-  setTimeout(callback, randInt(1000), x * 3);
-};
-const sub2 = (callback, x) => {
-  setTimeout(callback, randInt(1000), x - 2);
-};
-const split = (callback, x) => {
-  setTimeout(callback, randInt(1000), x, x);
-};
-const add = (callback, x, y) => {
-  setTimeout(callback, randInt(1000), x + y);
-};
-const div4 = (callback, x) => {
-  setTimeout(callback, randInt(1000), x / 4);
-};
-
-const computation = waterfall(add5, mult3, sub2, split, add, div4);
-computation(console.log, 5) // -> 14
-
-// те саме, що й:
-
-const computation2 = (input, callback) => {
-  const f6 = x=> div4(callback, x);
-  const f5 = (x, y) => add(f6, x, y);
-  const f4 = x => split(f5, x);
-  const f3 = x => sub2(f4, x);
-  const f2 = x => mult3(f3, x);
-  add5(f2, input);
-}
- -

Різниця між reduce та reduceRight

- -
var a = ['1', '2', '3', '4', '5'];
-var left  = a.reduce(function(prev, cur)      { return prev + cur; });
-var right = a.reduceRight(function(prev, cur) { return prev + cur; });
-
-console.log(left);  // "12345"
-console.log(right); // "54321"
- -

Визначення композиції функцій

- -

Концепція композиції функцій проста - вона об'єднує функції. Це послідовний, справа наліво, виклик кожної функції з результатом попередньої.

- -
/**
- * Композиція функцій - це підхід, в якому результат однієї функції
- * передається у іншу і т.д.
- *
- * h(x) = f(g(x))
- *
- * Виконання функцій відбувається справа наліво
- *
- * https://uk.wikipedia.org/wiki/Композиція_функцій
- */
-
-const compose = (...args) => (value) => args.reduceRight((acc, fn) => fn(acc), value)
-
-// Збільшує передане число на 1
-const inc = (n) => n + 1
-
-// Подвоює передане значення
-const double = (n) => n * 2
-
-// використання композиції функцій
-console.log(compose(double, inc)(2)); // 6
-
-// використання композиції функцій
-console.log(compose(inc, double)(2)); // 5
-
- -

Поліфіл

- -

Метод reduceRight був доданий до стандарту ECMA-262 у 5-й версії; таким чином, він може не бути присутній у всіх реалізаціях стандарту. Ви можете обійти цю проблему, вставивши наступний код на початку ваших скриптів, це дозволить використовувати метод reduceRight у версіях, які не підтримують його початково.

- -
// Функціональні кроки ECMA-262, версія 5, 15.4.4.22
-// Довідка: http://es5.github.io/#x15.4.4.22
-if ('function' !== typeof Array.prototype.reduceRight) {
-  Array.prototype.reduceRight = function(callback /*, initialValue*/) {
-    'use strict';
-    if (null === this || 'undefined' === typeof this) {
-      throw new TypeError('Array.prototype.reduce called on null or undefined');
-    }
-    if ('function' !== typeof callback) {
-      throw new TypeError(callback + ' is not a function');
-    }
-    var t = Object(this), len = t.length >>> 0, k = len - 1, value;
-    if (arguments.length >= 2) {
-      value = arguments[1];
-    } else {
-      while (k >= 0 && !(k in t)) {
-        k--;
-      }
-      if (k < 0) {
-        throw new TypeError('Reduce of empty array with no initial value');
-      }
-      value = t[k--];
-    }
-    for (; k >= 0; k--) {
-      if (k in t) {
-        value = callback(value, t[k], k, t);
-      }
-    }
-    return value;
-  };
-}
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES5.1', '#sec-15.4.4.22', 'Array.prototype.reduceRight')}}{{Spec2('ES5.1')}}Початкове визначення. Реалізоване у JavaScript 1.8.
{{SpecName('ES6', '#sec-array.prototype.reduceright', 'Array.prototype.reduceRight')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.reduceright', 'Array.prototype.reduceRight')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.reduceRight")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/reverse/index.html b/files/uk/web/javascript/reference/global_objects/array/reverse/index.html deleted file mode 100644 index e1d3dade19..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/reverse/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Array.prototype.reverse() -slug: Web/JavaScript/Reference/Global_Objects/Array/reverse -tags: - - Array - - JavaScript - - Method - - Prototype - - Довідка -translation_of: Web/JavaScript/Reference/Global_Objects/Array/reverse ---- -
{{JSRef}}
- -

Метод reverse() перевертає масив на місці, змінюючи послідовність елементів на протилежну. Тобто, перший елемент стає останнім, а останній — першим.

- -

{{EmbedInteractiveExample("pages/js/array-reverse.html")}}

- - - -

Синтаксис

- -
a.reverse()
- -

Вертає

- -

Перевернутий масив.

- -

Опис

- -

Метод reverse() змінює масив, для якого його викликано, спротилежнюючи послідовність елементів, і вертає посилання на той масив.

- -

Метод reverse є навмисно загальним; його можна викликати або застосувати до об'єктів, які схожі на масиви. Об'єкти, які не мають властивості length, що відображає останню з серії послідовних, числових властивостей, що починаються з нуля, можуть поводитися непередбачувано.

- -

Приклади

- -

Перевертання елементів у масиві

- -

У наведеному прикладі започатковується масив a з трьома елементами, а тоді їх порядок спротилежнюється. Виклик методу reverse() повертає посилання на перевернутий масив а.

- -
var a = ['спершу', 'було', 'слово'];
-var reversed = a.reverse();
-
-console.log(reversed === a);  // виводить true
-console.log(a);               // виводить ['слово', 'було', 'спершу']
-console.log(reversed);        // виводить ['слово', 'було', 'спершу']
-
- -

Перевертання елементів у подібному до масиву об'єкті

- -

Наступний приклад створює подібний до масиву об'єкт a, що містить три елементи та властивість довжини, а тоді перевертає цей об'єкт. Виклик методу reverse() повертає посилання на перевернутий об'єкт a.

- -
const a = {0: 1, 1: 2, 2: 3, length: 3};
-
-console.log(a); // {0: 1, 1: 2, 2: 3, length: 3}
-
-Array.prototype.reverse.call(a); //такий самий синтаксис для apply()
-
-console.log(a); // {0: 3, 1: 2, 2: 1, length: 3}
- -

Специфікації

- - - - - - - - - - -
Специфікація
{{SpecName('ESDraft', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}
- -

Підтримка веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.reverse")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/shift/index.html b/files/uk/web/javascript/reference/global_objects/array/shift/index.html deleted file mode 100644 index 7c3d20f114..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/shift/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: Array.prototype.shift() -slug: Web/JavaScript/Reference/Global_Objects/Array/shift -translation_of: Web/JavaScript/Reference/Global_Objects/Array/shift ---- -
{{JSRef}}
- -

Метод shift() видаляє перший елемент з масиву і повертає цей елемент. Цей метод змінює довжину масиву.

- -
var a = [1, 2, 3];
-a.shift();
-
-console.log(a); // [2, 3]
- -

Синтаксис

- -
arr.shift()
- -

Повернене значення

- -

Видалений елемент.

- -

Опис

- -

Метод shift видаляє елемент із нульовим індексом і  зсуває значення з послідовними індексами назад, потім повертає видалене значення. Якщо {{jsxref("Array.length", "length")}} властивість рівна 0, {{jsxref("undefined")}} повертається.

- -

shift є загальним навмисно; Цей метод може бути {{jsxref("Function.call", "викликаний", "", 1)}} чи {{jsxref("Function.apply", "застосований", "", 1)}} до схожих із масивами об'єктів. Об'єкти, які не містять length властивості, що відображає кінець послідовного ряду, базовані на нулі числові властивості можуть себе вести беззмістовним чином.

- -

Приклади

- -

Видалення елементу з масиву

- -

Поданий нижче код відображає myFish масив до і після видалення його першого елементу. Також він відображає видалений елемент.

- -
var myFish = ['angel', 'clown', 'mandarin', 'surgeon'];
-
-console.log('myFish before: ' + myFish);
-// "myFish before: angel,clown,mandarin,surgeon"
-
-var shifted = myFish.shift();
-
-console.log('myFish after: ' + myFish);
-// "myFish after: clown,mandarin,surgeon"
-
-console.log('Removed this element: ' + shifted);
-// "Removed this element: angel"
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяCтатусКоментар
{{SpecName('ES3')}}{{Spec2('ES3')}}Початкове визначення. Впроваджено в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.9', 'Array.prototype.shift')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.shift', 'Array.prototype.shift')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.shift', 'Array.prototype.shift')}}{{Spec2('ESDraft')}}
- -

Браузерна сумісність

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
БраузерChromeFirefox (Gecko)EdgeInternet ExplorerOperaSafari
Базова підтримка{{CompatChrome("1.0")}}{{CompatGeckoDesktop("1.7")}}{{CompatVersionUnknown}}{{CompatIE("5.5")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
БраузерAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базова підтримка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Дивись також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/slice/index.html b/files/uk/web/javascript/reference/global_objects/array/slice/index.html deleted file mode 100644 index 0e3b098fda..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/slice/index.html +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Array.prototype.slice() -slug: Web/JavaScript/Reference/Global_Objects/Array/slice -tags: - - Array - - JavaScript - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice ---- -
{{JSRef}}
- -

Метод slice() повертає дрібну копію частини масиву у новий масив, починаючи з begin і до end (не включаючи end), де begin та end є індексами елементів масиву. Початковий масив не змінюється.

- -
{{EmbedInteractiveExample("pages/js/array-slice.html")}}
- - - -

Синтаксис

- -
arr.slice([begin[, end]])
-
- -

Параметри

- -
-
begin {{optional_inline}}
-
Індекс на основі нуля, з якого починається копіювання.
-
Індекс може бути від'ємним, зазначаючи відступ з кінця послідовності. slice(-2) копіює останні два елементи послідовності.
-
Якщо begin не надано, slice починається з індексу 0.
-
Якщо begin більший за довжину послідовності, повертається порожній масив.
-
end {{optional_inline}}
-
Індекс на основі нуля до якого вібувається копіювання. slice копіює до, але не включаючи end.
-
Наприклад, slice(1,4) копіює з другого по четвертий елемент (елементи за індексами 1, 2 та 3).
-
Індекс може бути від'ємним, зазначаючи відступ з кінця послідовності. slice(2,-1) копіює з третього елемента по другий з кінця.
-
Якщо end пропущений, slice копіює до кінця послідовності (arr.length).
-
Якщо end більший за довжину послідовності, slice копіює до кінця послідовності (arr.length).
-
- -

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

- -

Новий масив, який містить скопійовані елементи.

- -

Опис

- -

slice не змінює початковий масив. Він повертає дрібну копію елементів початкового масиву. Елементи початкового масиву копіюються у повернений масив наступним чином:

- - - -

Якщо новий елемент додано у якийсь з масивів, інший масив не зміниться.

- -

Приклади

- -

Повернути частину існуючого масиву

- -
var fruits = ['Банан', 'Апельсин', 'Лимон', 'Яблуко', 'Манго'];
-var citrus = fruits.slice(1, 3);
-
-// fruits містить ['Банан', 'Апельсин', 'Лимон', 'Яблуко', 'Манго']
-// citrus містить ['Апельсин','Лимон']
-
- -

Використання slice

- -

У наступному прикладі slice створює новий масив newCar з myCar. Обидва містять посилання на об'єкт myHonda. Коли колір myHonda змінюється на фіолетовий, обидва масиви відображають зміну.

- -
// Використання slice, створення newCar з myCar.
-var myHonda = { color: 'червоний', wheels: 4, engine: { cylinders: 4, size: 2.2 } };
-var myCar = [myHonda, 2, 'чудовий стан', 'придбана 1997'];
-var newCar = myCar.slice(0, 2);
-
-// Вивести значення myCar, newCar та колір myHonda
-// з обох масивів.
-console.log('myCar = ' + JSON.stringify(myCar));
-console.log('newCar = ' + JSON.stringify(newCar));
-console.log('myCar[0].color = ' + myCar[0].color);
-console.log('newCar[0].color = ' + newCar[0].color);
-
-// Змінити колір myHonda.
-myHonda.color = 'фіолетовий';
-console.log('Новий колір Honda ' + myHonda.color);
-
-// Вивести колір myHonda з обох масивів.
-console.log('myCar[0].color = ' + myCar[0].color);
-console.log('newCar[0].color = ' + newCar[0].color);
-
- -

Скрипт запише:

- -
myCar = [{color: 'червоний', wheels: 4, engine: {cylinders: 4, size: 2.2}}, 2,
-         'чудовий стан', 'придбана 1997']
-newCar = [{color: 'червоний', wheels: 4, engine: {cylinders: 4, size: 2.2}}, 2]
-myCar[0].color = червоний
-newCar[0].color = червоний
-Новий колір Honda фіолетовий
-myCar[0].color = фіолетовий
-newCar[0].color = фіолетовий
-
- -

Подібні до масиву об'єкти

- -

Метод slice також може перетворювати подібні до масиву об'єкти/колекції на нові об'єкти Array. Ви просто прив'язуєте метод до об'єкта. {{jsxref("Functions/arguments", "Аргументи")}} всередині функції є прикладом подібного до масиву об'єкта.

- -
function list() {
-  return Array.prototype.slice.call(arguments);
-}
-
-var list1 = list(1, 2, 3); // [1, 2, 3]
-
- -

Прив'язати можна функцією .call з {{jsxref("Function.prototype")}}, також можна скоротити запис, використовуючи  [].slice.call(arguments) замість Array.prototype.slice.call. В будь-якому випадку, все можна спростити за допомогою {{jsxref("Function.prototype.bind", "bind")}}.

- -
var unboundSlice = Array.prototype.slice;
-var slice = Function.prototype.call.bind(unboundSlice);
-
-function list() {
-  return slice(arguments);
-}
-
-var list1 = list(1, 2, 3); // [1, 2, 3]
-
- -

Оптимізація кросбраузерної поведінки

- -

Хоча об'єкти середовища виконання (такі як об'єкти DOM) за специфікацією не зобов'язані відповідати поведінці Mozilla при перетворенні методом Array.prototype.slice, і IE < 9 цього не робить, версії IE починаючи від 9-ї дозволяють це. Використання шима дозволяє  створити надійну кросбраузерну поведінку. Поки інші сучасні переглядачі підтримують цю можливість, як нині роблять IE, Mozilla, Chrome, Safari та Opera, розробники, які читають (підтримують для об'єктів DOM) slice-код, що покладається на цей шим, не будуть введені в оману семантикою; вони спокійно можуть покладатися на семантику, щоб реалізувати тепер вже де-факто стандартну поведінку. (Шим також виправляє роботу IE з другим аргументом slice(), коли він явно заданий як {{jsxref("null")}}/{{jsxref("undefined")}}, чого більш ранні версії IE також не дозволяли, але всі сучасні переглядачі, в тому числі IE >= 9, зараз дозволяють.)

- -
/**
- * Шим для "виправлення" слабкої підтримки IE (IE < 9) використання slice
- * на об'єктах середовища, таких як NamedNodeMap, NodeList та HTMLCollection
- * (технічно, оскільки об'єкти середовища були залежні від реалізації,
- * принаймні до ES2015, IE не мав потреби у цій функціональності.)
- * Також працює для рядків, виправляє IE < 9, дозволяючи явно задане значення
- * undefined другим аргументом (як у Firefox) та запобігає помилкам
- * при виклику на інших об'єктах DOM.
- */
-(function () {
-  'use strict';
-  var _slice = Array.prototype.slice;
-
-  try {
-    // Не можна використовувати з елементами DOM у IE < 9
-    _slice.call(document.documentElement);
-  } catch (e) { // Не працює у IE < 9
-    // Працюватиме для справжніх масивів, подібних до масивів об'єктів,
-    // NamedNodeMap (атрибутів, сутностей, нотацій),
-    // NodeList (напр., getElementsByTagName), HTMLCollection (напр., childNodes),
-    // і не схибить на інших об'єктах DOM (як на елементах DOM у IE < 9)
-    Array.prototype.slice = function(begin, end) {
-      // IE < 9 не любить undefined в якості аргументу end
-      end = (typeof end !== 'undefined') ? end : this.length;
-
-      // Для об'єктів Array використовуємо рідну функцію slice
-      if (Object.prototype.toString.call(this) === '[object Array]'){
-        return _slice.call(this, begin, end);
-      }
-
-      // Для подібних до масивів об'єктів робимо це самостійно.
-      var i, cloned = [],
-        size, len = this.length;
-
-      // Обробляємо від'ємне значення "begin"
-      var start = begin || 0;
-      start = (start >= 0) ? start : Math.max(0, len + start);
-
-      // Обробляємо від'ємне значення "end"
-      var upTo = (typeof end == 'number') ? Math.min(end, len) : len;
-      if (end < 0) {
-        upTo = len + end;
-      }
-
-      // Очікуваний розмір нового масиву
-      size = upTo - start;
-
-      if (size > 0) {
-        cloned = new Array(size);
-        if (this.charAt) {
-          for (i = 0; i < size; i++) {
-            cloned[i] = this.charAt(start + i);
-          }
-        } else {
-          for (i = 0; i < size; i++) {
-            cloned[i] = this[start + i];
-          }
-        }
-      }
-
-      return cloned;
-    };
-  }
-}());
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ESDraft', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ESDraft')}}
{{SpecName('ES6', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ES6')}}
{{SpecName('ES5.1', '#sec-15.4.4.10', 'Array.prototype.slice')}}{{Spec2('ES5.1')}}
{{SpecName('ES3')}}{{Spec2('ES3')}}Початкове визначення. Реалізовано у JavaScript 1.2.
- -

Сумісність з веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.slice")}}

- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/some/index.html b/files/uk/web/javascript/reference/global_objects/array/some/index.html deleted file mode 100644 index 934df016e0..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/some/index.html +++ /dev/null @@ -1,206 +0,0 @@ ---- -title: Array.prototype.some() -slug: Web/JavaScript/Reference/Global_Objects/Array/some -tags: - - ECMAScript5 - - Довідка - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/some ---- -
{{JSRef}}
- -

Метод some() з'ясовує, чи містить масив хоч один елемент, для якого зазначена функція callback повертає true (або значення, що зводиться до true). Повертає значення типу Boolean.

- -
-

Зауваження: для порожнього масиву цей метод незмінно повертає false.

-
- -
{{EmbedInteractiveExample("pages/js/array-some.html")}}
- - - -

Синтаксис

- -
arr.some(callback(element[, index[, array]])[, thisArg])
- -

Параметри

- -
-
callback
-
Функція, яка перевіряє елементи. Приймає три аргументи: -
-
element
-
Значення чергового елемента масиву.
-
index {{Optional_inline}}
-
Індекс чергового елемента в масиві.
-
array{{Optional_inline}}
-
Масив, до якого застосовано some().
-
-
-
thisArg{{Optional_inline}}
-
Значення, що використовується як this коли викликається callback.
-
- -

Повертає

- -

true, якщо функція повертає {{Glossary("truthy", "істинне")}} значення принаймні для одного з елементів масива. Інакше false.

- -

Опис

- -

Метод some() викликає функцію callback для кожного елемента в масиві один за одним, доки не знайде такий, для якого callback повертає істинне значення (значення, яке стає true внаслідок перетворення на Boolean). Щойно такий елемент знайдено, some() негайно повертає true, не перевіряючи решту елементів. Якщо таких елементів не знайдено, метод some() повертає false.

- -

Зауважте, що callback викликається лише для індексів масиву, яким надано значення. Тож індекси без встановлених значень, а також видалені елементи будуть знехтувані.

- -

Функція callback викликається з трьома аргументами: значення елемента, індекс елемента і об'єкт масиву, для якого викликано метод some().

- -

Якщо для some() визначено параметр thisArg, його буде використано як значення this для функції callback. В іншому випадку, буде використано значення {{jsxref("undefined")}}. Зрештою, значення this для функції callback буде визначено відповідно до загальних правил.

- -

Метод some() не змінює масив, для якого його викликано.

- -

Межі індексів елементів, які буде перевірено, встановлюються перед найпершим викликом callback. Тож всі елементи, додані в кінець масиву вже під час виконання some(), будуть знехтувані. Якщо значення котрогось елемента буде змінено зсередини callback, наступний виклик callback (якщо такий буде) це врахує. Видалені елементи перевірено не буде.

- -

Приклади

- -

Перевірка елементів масива

- -

В цьому прикладі виклик some() перевіряє, чи містить масив числа більші від 10:

- -
function isBiggerThan10(element, index, array) {
-  return element > 10;
-}
-
-[2, 5, 8, 1, 4].some(isBiggerThan10);   // вертає false
-[12, 5, 8, 1, 4].some(isBiggerThan10);  // вертає true
-
- -

Перевірка елементів масива стрілковою функцією

- -

Те саме, що і в попередньому прикладі, але із синтаксисом стрілкової функції:

- -
[2, 5, 8, 1, 4].some(x => x > 10);   // вертає false
-[12, 5, 8, 1, 4].some(x => x > 10);  // вертає true
-
- -

Перевірка наявності певного значення в масиві

- -

Щоб відтворити поведінку метода {{jsxref("Array.prototype.includes()", "includes()")}}, функція повертає true, щойно знаходить шукане значення в масиві:

- -
var fruits = ['яблуко', 'груша', 'персик', 'банан'];
-
-function contains(array, value) {
-  return array.some(function(v) {
-    return value === v;
-  });
-}
-
-contains(fruits, 'вишня');  // вертає false
-contains(fruits, 'банан');  // вертає true
- -

Перевірка наявності певного значення в масиві стрілковою функцією

- -
var fruits = ['яблуко', 'груша', 'персик', 'банан'];
-
-function contains(array, value) {
-  return array.some(v => value === v);
-}
-
-contains(fruits, 'вишня');  // вертає false
-contains(fruits, 'банан');  // вертає true
- -

Зведення всякого значення до Boolean

- -
var TRUTHY_VALUES = [true, 'true', 1];
-
-function getBoolean(value) {
-  'use strict';
-
-  if (typeof value === 'string') {
-    value = value.toLowerCase().trim();
-  }
-
-  return TRUTHY_VALUES.some(function(t) {
-    return t === value;
-  });
-}
-
-getBoolean(false);    // вертає false
-getBoolean('false');  // вертає false
-getBoolean(1);        // вертає true
-getBoolean('true');   // вертає true
- -

Запасний варіант (поліфіл)

- -

Цей метод було стандартизовано 5-им випуском ECMA-262. Для рушіїв, що не мають підтримки цього метода, стане в пригоді наведене нижче рішення. Цей алгоритм аналогічно відповідає вимогам 5-го випуску ECMA-262 за умови, що {{jsxref("Object")}} і {{jsxref("TypeError")}} не було змінено, а виклик callback.call() відповідає очікуваному {{jsxref("Function.prototype.call()")}}:

- -
// Production steps of ECMA-262, Edition 5, 15.4.4.17
-// Reference: http://es5.github.io/#x15.4.4.17
-if (!Array.prototype.some) {
-  Array.prototype.some = function(fun, thisArg) {
-    'use strict';
-
-    if (this == null) {
-      throw new TypeError('Array.prototype.some called on null or undefined');
-    }
-
-    if (typeof fun !== 'function') {
-      throw new TypeError();
-    }
-
-    var t = Object(this);
-    var len = t.length >>> 0;
-
-    for (var i = 0; i < len; i++) {
-      if (i in t && fun.call(thisArg, t[i], i, t)) {
-        return true;
-      }
-    }
-
-    return false;
-  };
-}
-
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}}{{Spec2('ES5.1')}}Початкова виознака. Запроваджено у JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ESDraft')}}
- -

Підтримка веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.some")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/sort/index.html b/files/uk/web/javascript/reference/global_objects/array/sort/index.html deleted file mode 100644 index 2f592898bd..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/sort/index.html +++ /dev/null @@ -1,274 +0,0 @@ ---- -title: Array.prototype.sort() -slug: Web/JavaScript/Reference/Global_Objects/Array/sort -translation_of: Web/JavaScript/Reference/Global_Objects/Array/sort ---- -
{{JSRef}}
- -

Метод sort() відсортовує елементи масиву на місці та повертає відсортований масив. За замовчуванням порядок сортування будується на перетворенні елементів у рядки, а потім на порівнянні іхньої послідовності значень кодових одиниць UTF-16.

- -

Часова та просторова складність такого сортування не може гарантуватися, оскільки вона залежить від реалізації.

- -
{{EmbedInteractiveExample("pages/js/array-sort.html")}}
- - - -

Синтаксис

- -
arr.sort([compareFunction])
-
- -

Параметри

- -
-
compareFunction {{optional_inline}}
-
Вказує функцію, яка визначає порядок сортування. Якщо не вказувати, елементи масиву будуть перетворені на рядки, а потім відсортовані згідно до значення кодових точок Unicode кожного символу.
-
-
-
firstEl
-
Перший елемент для порівняння.
-
secondEl
-
Другий елемент для порівняння.
-
-
-
- -

Повернене значення

- -

Відсортований масив. Зверніть увагу на те, що масив сортується на місці, без створення копії.

- -

Опис

- -

Якщо compareFunction не передається, усі визначені (non-undefined) елементи масиву відсортовуються через перетворення у рядки та порівняння цих рядків в UTF-16 порядку кодових точок. Наприклад, "banana" іде перед "cherry". У числовому сортуванні, 9 іде перед 80, але оскільки числа перетворюються на рядки, "80" іде перед "9" в Unicode порядку. Усі undefined елементи відсортуються у кінець масиву. 

- -
-

Примітка : В UTF-16, Unicode символи вище за \uFFFF кодуються як дві сурогатні кодові одиниці, діапазону \uD800-\uDFFF. Значення кожної кодової одиниці враховується для порівняння окремо. Таким чином, символ створений сурогатною парою \uD655\uDE55 буде відсортований перед символом \uFF3A.

-
- -

Якщо compareFunction передається, усі визначені (non-undefined) елементи масиву відсортовуються згідно до поверненого значення функції порівняння (усі undefined елементи масиву відсортовуються у кінець масиву, без виклику compareFunction). Якщо a та b є двома елементами, що порівнюються, тоді: 

- - - -

Таким чином, функція порівняння має наступний вигляд:

- -
function compare(a, b) {
-  if (a is less than b by some ordering criterion) {
-    return -1;
-  }
-  if (a is greater than b by the ordering criterion) {
-    return 1;
-  }
-  // a must be equal to b
-  return 0;
-}
-
- -

Для того, щоб порівняти числа замість рядків, функція порівняння може просто відняти b з a. Наступна функція відсортовує масив у порядку зростання (якщо тільки вона не містить Infinity та NaN):

- -
function compareNumbers(a, b) {
-  return a - b;
-}
-
- -

Метод sort зручно використовувати з {{jsxref("Operators/function", "function expressions", "", 1)}}:

- -
var numbers = [4, 2, 5, 1, 3];
-numbers.sort(function(a, b) {
-  return a - b;
-});
-console.log(numbers);
-
-// [1, 2, 3, 4, 5]
-
- -

ES2015 надає {{jsxref("Functions/Arrow_functions", "arrow function expressions", "", 1)}} за допомогою навіть коротшого синтаксису. 

- -
let numbers = [4, 2, 5, 1, 3];
-numbers.sort((a, b) => a - b);
-console.log(numbers);
-
-// [1, 2, 3, 4, 5]
- -

Об'єкти можна сортувати, використовуючи значення однієї зі своїх властивостей. 

- -
var items = [
-  { name: 'Edward', value: 21 },
-  { name: 'Sharpe', value: 37 },
-  { name: 'And', value: 45 },
-  { name: 'The', value: -12 },
-  { name: 'Magnetic', value: 13 },
-  { name: 'Zeros', value: 37 }
-];
-
-// sort by value
-items.sort(function (a, b) {
-  return a.value - b.value;
-});
-
-// sort by name
-items.sort(function(a, b) {
-  var nameA = a.name.toUpperCase(); // ignore upper and lowercase
-  var nameB = b.name.toUpperCase(); // ignore upper and lowercase
-  if (nameA < nameB) {
-    return -1;
-  }
-  if (nameA > nameB) {
-    return 1;
-  }
-
-  // names must be equal
-  return 0;
-});
- -

Приклади

- -

Створення, відображення, та сортування масиву

- -

У наступному прикладі створюються чотири масиви і відображаються спершу початковий, потім відсортованний масиви. Числові масиви сортуються без функції порівняння, а відсортовані потім - з нею.

- -
var stringArray = ['Blue', 'Humpback', 'Beluga'];
-var numericStringArray = ['80', '9', '700'];
-var numberArray = [40, 1, 5, 200];
-var mixedNumericArray = ['80', '9', '700', 40, 1, 5, 200];
-
-function compareNumbers(a, b) {
-  return a - b;
-}
-
-console.log('stringArray:', stringArray.join());
-console.log('Sorted:', stringArray.sort());
-
-console.log('numberArray:', numberArray.join());
-console.log('Sorted without a compare function:', numberArray.sort());
-console.log('Sorted with compareNumbers:', numberArray.sort(compareNumbers));
-
-console.log('numericStringArray:', numericStringArray.join());
-console.log('Sorted without a compare function:', numericStringArray.sort());
-console.log('Sorted with compareNumbers:', numericStringArray.sort(compareNumbers));
-
-console.log('mixedNumericArray:', mixedNumericArray.join());
-console.log('Sorted without a compare function:', mixedNumericArray.sort());
-console.log('Sorted with compareNumbers:', mixedNumericArray.sort(compareNumbers));
-
- -

Цей приклад буде мати наступний вивід. Згідно до нього, при використанні функції порівняння, числа сортуються належним чином, як самі числа, так і рядки з числами.

- -
stringArray: Blue,Humpback,Beluga
-Sorted: Beluga,Blue,Humpback
-
-numberArray: 40,1,5,200
-Sorted without a compare function: 1,200,40,5
-Sorted with compareNumbers: 1,5,40,200
-
-numericStringArray: 80,9,700
-Sorted without a compare function: 700,80,9
-Sorted with compareNumbers: 9,80,700
-
-mixedNumericArray: 80,9,700,40,1,5,200
-Sorted without a compare function: 1,200,40,5,700,80,9
-Sorted with compareNumbers: 1,5,9,40,80,200,700
-
- -

Сортування не-ASCII символів

- -

Для сортування рідків, які містять символи, що не входять до ASCII, наприклад, рядків з діакритичними знаками (e, é, è, a, ä, тощо), чи рядків мовою іншою за англійську, використовується {{jsxref("String.localeCompare")}}. Ця функція може порівнювати ці символи таким чином, що вони з'являються у правильному порядку. 

- -
var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
-items.sort(function (a, b) {
-  return a.localeCompare(b);
-});
-
-// items is ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']
-
- -

Сортування за допомогою функції map()

- -

Функція compareFunction може викликатися багато разів на елемент всередені масиву. В залежності від характеру compareFunction, це може призводити до високих накладних витрат. Чим більше роботи виконує compareFunction, чим більше елементів їй треба відсортувати, тим доцільнішим буде використання функції map задля цієї задачі. Map() працює наступним чином: функція перебирає масив лише один раз, потім вона перетягує фактичні значення для сортування у тимчасовий масив, відсортовує цей масив, а потім перебирає його для того, щоб досягти правильного порядку. 

- -
// the array to be sorted
-var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
-
-// temporary array holds objects with position and sort-value
-var mapped = list.map(function(el, i) {
-  return { index: i, value: el.toLowerCase() };
-})
-
-// sorting the mapped array containing the reduced values
-mapped.sort(function(a, b) {
-  if (a.value > b.value) {
-    return 1;
-  }
-  if (a.value < b.value) {
-    return -1;
-  }
-  return 0;
-});
-
-// container for the resulting order
-var result = mapped.map(function(el){
-  return list[el.index];
-});
-
- -

У відкритому доступі є бібліотека під назвою mapsort, яка застосовує цей підхід. 

- -

Специфікація

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Специфікація СтатусКоментар
{{SpecName('ES1')}}{{Spec2('ES1')}} -

Початкове визначення.

-
{{SpecName('ES5.1', '#sec-15.4.4.11', 'Array.prototype.sort')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.sort', 'Array.prototype.sort')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.sort', 'Array.prototype.sort')}}{{Spec2('ESDraft')}}
- -

Сумісність з браузерами

- -
- - -

{{Compat("javascript.builtins.Array.sort")}}

-
- -

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

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/splice/index.html b/files/uk/web/javascript/reference/global_objects/array/splice/index.html deleted file mode 100644 index 0565d3f266..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/splice/index.html +++ /dev/null @@ -1,162 +0,0 @@ ---- -title: Array.prototype.splice() -slug: Web/JavaScript/Reference/Global_Objects/Array/splice -tags: - - Array - - JavaScript - - Масив - - метод - - прототип -translation_of: Web/JavaScript/Reference/Global_Objects/Array/splice ---- -
{{JSRef}}
- -

Метод splice() змінює вміст масиву, видаляючи існуючі та/або додаючи нові елементи.

- -

{{EmbedInteractiveExample("pages/js/array-splice.html")}}

- - - -

Синтаксис

- -
var arrDeletedItems = array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
-
- -

Параметри

- -
-
start
-
Індекс елемента, з якого розпочнеться зміна масиву. Якщо індекс більший за розмір масиву, start буде рівним довжині масиву. Якщо індекс від'ємний, позначатиме кількість елементів з кінця масиву (починаючи з -1, тобто -n означатиме індекс n-го елемента з кінця, і таким чином є еквівалентом array.length - n). Якщо абсолютна величина start є більшою за довжину масиву, зміни почнуться з індексу 0.
-
deleteCount{{optional_inline}}
-
Число, що вказує на кількість елементів масиву, які необхідно видалити, починаючи з індексу start.
-
Якщо аргумент deleteCount не заданий, або його значення більше чи дорівнює arr.length - start (тобто, більше чи дорівнює кількості елементів, які залишились у масиві, починаючи зі start), тоді будуть видалені всі елементи, починаючи зі start і до кінця масиву.
-
Якщо deleteCount рівний 0 або від'ємний, жоден елемент не буде видалений. У цьому випадку необхідно вказати хоча б один новий елемент для вставки (див. нижче).
-
item1, item2, ...{{optional_inline}}
-
Елементи, що будуть додані до масиву, починаючи з індексу start. Якщо не вказати жодного нового елемента, splice() лише видалить елементи з масиву.
-
- -

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

- -

Масив видалених елементів. Якщо видалено лише один елемент, метод поверне масив з одним елементом. Якщо жоден з елементів не видалявся, метод повертає пустий масив.

- -

Опис

- -

Якщо задана кількість елементів для вставлення відрізняється від кількості елементів на видалення, довжина масиву зміниться після виконання функції.

- -

Приклади

- -

Видалення 0 елементів, починаючи з індексу 2, і вставлення "drum"

- -
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
-var removed = myFish.splice(2, 0, 'drum');
-
-// myFish дорівнює ["angel", "clown", "drum", "mandarin", "sturgeon"] 
-// removed дорівнює [], жодний елемент не було видалено
-
- -

Видалення 0 елементів, починаючи з індексу 2, і вставлення "drum" та "guitar"

- -
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
-var removed = myFish.splice(2, 0, 'drum', 'guitar');
-
-// myFish дорівнює ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
-// removed дорівнює [], жодний елемент не було видалено
- -

Видалення 1 елемента, починаючи з індексу 3

- -
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
-var removed = myFish.splice(3, 1);
-
-// removed дорівнює ["mandarin"]
-// myFish дорівнює ["angel", "clown", "drum", "sturgeon"]
- -

Видалення 1 елементу, починаючи з індексу 2, і вставлення "trumpet"

- -
var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
-var removed = myFish.splice(2, 1, 'trumpet');
-
-// myFish дорівнює ["angel", "clown", "trumpet", "sturgeon"]
-// removed дорівнює ["drum"]
- -

Видалення 2-ох елементів, починаючи з індексу 0, і вставлення у масив елементів "parrot", "anemone" і "blue"

- -
var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
-var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
-
-// myFish дорівнює ["parrot", "anemone", "blue", "trumpet", "sturgeon"] 
-// removed дорівнює ["angel", "clown"]
- -

Видалення 2-ох елементів, починаючи з індексу 2

- -
var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon'];
-var removed = myFish.splice(2, 2);
-
-// myFish дорівнює ["parrot", "anemone", "sturgeon"] 
-// removed дорівнює ["blue", "trumpet"]
-
- -

Видалення 1-го елемента, починаючи з індексу -2

- -
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
-var removed = myFish.splice(-2, 1);
-
-// myFish дорівнює ["angel", "clown", "sturgeon"]
-// removed дорівнює ["mandarin"]
- -

Видалення всіх елементів, починаючи з індексу 2 (включно).

- -
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
-var removed = myFish.splice(2);
-
-// myFish дорівнює ["angel", "clown"] 
-// removed дорівнює ["mandarin", "sturgeon"]
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES3')}}{{Spec2('ES3')}}Початкове визначення. Реалізовано у JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.12', 'Array.prototype.splice')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.splice', 'Array.prototype.splice')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.splice', 'Array.prototype.splice')}}{{Spec2('ESDraft')}}
- -

Підтримка веб-переглядачів

- - - -

{{Compat("javascript.builtins.Array.splice")}}

- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/tolocalestring/index.html b/files/uk/web/javascript/reference/global_objects/array/tolocalestring/index.html deleted file mode 100644 index 75448b5e72..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/tolocalestring/index.html +++ /dev/null @@ -1,182 +0,0 @@ ---- -title: Array.prototype.toLocaleString() -slug: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString -tags: - - Array - - JavaScript - - Масив - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString ---- -
{{JSRef}}
- -

Метод toLocaleString() повертає рядок, що відображає елементи масиву. Елементи перетворюються у рядки, використовуючи свої методи toLocaleString, і ці рядки розділяються символами, що відповідають локалі (наприклад, комою “,”).

- -
{{EmbedInteractiveExample("pages/js/array-tolocalestring.html")}}
- -

Синтаксис

- -
arr.toLocaleString([locales[, options]]);
-
- -

Параметри

- -
-
locales {{optional_inline}}
-
Рядок з міткою мови BCP 47 або масив таких рядків. Щодо загального вигляду та інтерпретації аргументу locales дивіться  {{jsxref("Intl")}}.
-
options {{optional_inline}}
-
Об'єкт з властивостями конфігурації, для числових значень дивіться {{jsxref("Number.prototype.toLocaleString()")}}, а для дат {{jsxref("Date.prototype.toLocaleString()")}}.
-
- -

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

- -

Текстовий рядок, що відображає елементи масиву.

- -

Приклади

- -

Використання locales та options

- -

Елементи масиву перетворюються на рядки, використовуючи свої методи toLocaleString.

- - - -

Завжди відображати знак валюти для рядків та чисел у масиві prices:

- -
var prices = ['¥7', 500, 8123, 12];
-prices.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' });
-
-// "¥7,¥500,¥8,123,¥12"
-
- -

Більше прикладів дивіться на сторінках {{jsxref("Intl")}}, {{jsxref("NumberFormat")}} та {{jsxref("DateTimeFormat")}}.

- -

Поліфіл

- -
// https://tc39.github.io/ecma402/#sup-array.prototype.tolocalestring
-if (!Array.prototype.toLocaleString) {
-  Object.defineProperty(Array.prototype, 'toLocaleString', {
-    value: function(locales, options) {
-      // 1. Нехай O дорівнює ? ToObject(this value).
-      if (this == null) {
-        throw new TypeError('"this" is null or not defined');
-      }
-
-      var a = Object(this);
-
-      // 2. Нехай len дорівнює ? ToLength(? Get(A, "length")).
-      var len = a.length >>> 0;
-
-      // 3. Нехай separator дорівнює рядковому значенню
-      //    роздільника елементів списку згідно поточної
-      //    локалі середовища виконання (це значення
-      //    визначається реалізацією).
-      // ЗАУВАГА: В даному випадку ми використовуємо кому
-      var separator = ',';
-
-      // 4. Якщо len дорівнює нулю, повернути порожінй рядок.
-      if (len === 0) {
-        return '';
-      }
-
-      // 5. Нехай firstElement дорівнює ? Get(A, "0").
-      var firstElement = a[0];
-      // 6. Якщо firstElement дорівнює undefined або null, тоді
-      //  a. Нехай R дорівнює порожньому рядку.
-      // 7. Інакше,
-      //  a. Нехай R дорівнює ?
-      //     ToString(?
-      //       Invoke(
-      //        firstElement,
-      //        "toLocaleString",
-      //        « locales, options »
-      //       )
-      //     )
-      var r = firstElement == null ?
-        '' : firstElement.toLocaleString(locales, options);
-
-      // 8. Нехай k дорівнює 1.
-      var k = 1;
-
-      // 9. Повторювати, доки k < len
-      while (k < len) {
-        // а. Нехай S дорівнює рядковому значенню, утвореному
-        //   об'єднанням R та separator.
-        var s = r + separator;
-
-        // б. Нехай nextElement дорівнює ? Get(A, ToString(k)).
-        var nextElement = a[k];
-
-        // в. Якщо nextElement дорівнює undefined або null, тоді
-        //   i. Нехай R дорівнє порожньому рядку.
-        // г. Інакше,
-        //   i. Нехай R дорівнює ?
-        //     ToString(?
-        //       Invoke(
-        //        nextElement,
-        //        "toLocaleString",
-        //        « locales, options »
-        //       )
-        //     )
-        r = nextElement == null ?
-          '' : nextElement.toLocaleString(locales, options);
-
-        // ґ. Нехай R дорівнює рядковому значенню, утвореному
-        //   об'єднанням S та R.
-        r = s + r;
-
-        // д. Збільшити k на 1.
-        k++;
-      }
-
-      // 10. Повернути R.
-      return r;
-    }
-  });
-}
-
- -

Якщо вам потрібно підтримувати зовсім застарілі рушії JavaScript, які не підтримують Object.defineProperty, краще взагалі не використовувати поліфіли методів Array.prototype, оскільки ви не зможете зробити їх не перелічуваними.

- -

Специфікації

- - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ESDraft', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}{{Spec2('ESDraft')}}Початкове визначення було надане у ECMAScript 3.
{{SpecName('ES Int Draft', '#sup-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}{{Spec2('ES Int Draft')}}Це визначення замінює визначення, надане у ECMA-262.
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.toLocaleString")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/tosource/index.html b/files/uk/web/javascript/reference/global_objects/array/tosource/index.html deleted file mode 100644 index d493fe0e4f..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/tosource/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Array.prototype.toSource() -slug: Web/JavaScript/Reference/Global_Objects/Array/toSource -tags: - - Array - - JavaScript - - Масив - - метод - - нестандартний -translation_of: Web/JavaScript/Reference/Global_Objects/Array/toSource ---- -
{{JSRef}} {{non-standard_header}}
- -
Метод toSource() повертає рядкове представлення першокоду масиву.
- -

Синтаксис

- -
arr.toSource()
- -

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

- -

Рядкове представлення першокоду масиву.

- -

Опис

- -

Метод toSource() повертає наступні значення:

- - - -

Цей метод зазвичай викликається внутрішньо у JavaScript, а не явно у коді. Ви можете викликати toSource() під час налагодження для дослідження вмісту масиву.

- -

Приклади

- -

Досліджуємо першокод масиву

- -

Для дослідження першокоду масиву:

- -
var alpha = new Array('a', 'б', 'в');
-
-alpha.toSource();
-//повертає ['a', 'б', 'в']
-
- -

Специфікації

- -

Не є частиною жодного стандарту. Реалізовано у JavaScript 1.3.

- -

Сумісність з веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.toSource")}}

- -
- -

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

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/tostring/index.html b/files/uk/web/javascript/reference/global_objects/array/tostring/index.html deleted file mode 100644 index 53505797f4..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/tostring/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Array.prototype.toString() -slug: Web/JavaScript/Reference/Global_Objects/Array/toString -tags: - - Array - - Масив - - метод - - прототип -translation_of: Web/JavaScript/Reference/Global_Objects/Array/toString ---- -
{{JSRef}}
- -

Метод toString() повертає рядкове представлення заданого масиву та його елементів.

- -
{{EmbedInteractiveExample("pages/js/array-tostring.html")}}
- -

Синтаксис

- -
arr.toString()
- -

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

- -

Рядкове представлення елементів масиву.

- -

Опис

- -

Об'єкт {{jsxref("Array")}} заміщує метод toString об'єкта {{jsxref("Object")}}. Для об'єктів Array метод toString об'єднує масив та повертає один рядок, що містить усі елементи масиву, розділені комами.

- -

JavaScript викликає метод toString автоматично, коли масив потрібно відобразити у вигляді текстового значення або при посиланні на масив у поєднанні рядків.

- -

Семантика ECMAScript 5

- -

Введений у JavaScript 1.8.5 (Firefox 4) та сумісний з семантикою 5-ї версії ECMAScript, метод toString() є загальним і може використовуватися з будь-яким об'єктом. Буде викликаний метод {{jsxref("Object.prototype.toString()")}}, який поверне значення результату.

- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES1')}}{{Spec2('ES1')}}Початкове визначення. Реалізоване у JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.4.4.2', 'Array.prototype.toString')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.toString")}}

-
- -

Див. також

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/unshift/index.html b/files/uk/web/javascript/reference/global_objects/array/unshift/index.html deleted file mode 100644 index 0621da3662..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/unshift/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Array.prototype.unshift() -slug: Web/JavaScript/Reference/Global_Objects/Array/unshift -tags: - - Масив - - метод - - прототип -translation_of: Web/JavaScript/Reference/Global_Objects/Array/unshift ---- -
{{JSRef}}
- -

Метод unshift() додає один або декілька елементів на початок масиву і повертає новий розмір масиву.

- -

{{EmbedInteractiveExample("pages/js/array-unshift.html")}}

- -

Синтаксис

- -
arr.unshift([element1[, ...[, elementN]]])
- -

Параметри

- -
-
elementN
-
Елементи для додавання в початок масиву.
-
- -

Результат

- -

Нова властивість {{jsxref("Array.length", "length")}} об'єкту, для якого було викликано функцію.

- -

Опис

- -

Метод unshift вставляє задані значення в початок масиву.

- - - -

Метод unshift є навмисно загальним; він може бути {{jsxref("Function.call", "викликаний", "", 1)}} або {{jsxref("Function.apply", "застосований", "", 1)}} у об'єктах, схожих на масиви. Об'єкти, які не мають властивості length, що відображає останню з серії послідовних числових властивостей, що починаються з нуля, можуть поводитися непередбачувано.

- -

Будь ласка, зауважте, якщо у параметри передається більше одного значення, вони всі вставляються на початку об'єкта, саме в тому порядку, в якому були передані у параметри. Отже, виклик unshift з n аргументів за один раз, або виклик n разів з 1 аргументом (наприклад, у циклі), не дадуть однаковий результат. Наприклад:

- -
let arr = [4, 5, 6];
-
-arr.unshift(1, 2, 3);
-console.log(arr);
-// [1, 2, 3, 4, 5, 6]
-
-arr = [4, 5, 6]; // скидаємо значення масиву
-
-arr.unshift(1);
-arr.unshift(2);
-arr.unshift(3);
-
-console.log(arr);
-// [3, 2, 1, 4, 5, 6]
- - - -

Приклади

- -
var arr = [1, 2];
-
-arr.unshift(0); // результатом виклику буде значення 3, нова довжина масиву
-// arr дорівнює [0, 1, 2]
-
-arr.unshift(-2, -1); // нова довжина масиву дорівнює 5
-// arr дорівнює [-2, -1, 0, 1, 2]
-
-arr.unshift([-4, -3]); // нова довжина масиву дорівнює 6
-// arr дорівнбє [[-4, -3], -2, -1, 0, 1, 2]
-
-arr.unshift([-7, -6], [-5]); // нова довжина масиву дорівнює 8
-// arr дорівнює [ [-7, -6], [-5], [-4, -3], -2, -1, 0, 1, 2 ]
- -

Специфікації

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Назва специфікаціїСтатусКоментарій
{{SpecName('ES3')}}{{Spec2('ES3')}}Початкове визначення. Реалізовано в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.13', 'Array.prototype.unshift')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- - - -

{{Compat("javascript.builtins.Array.unshift")}}

- -
- -

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

- - diff --git a/files/uk/web/javascript/reference/global_objects/array/values/index.html b/files/uk/web/javascript/reference/global_objects/array/values/index.html deleted file mode 100644 index 8df5438b95..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/values/index.html +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Array.prototype.values() -slug: Web/JavaScript/Reference/Global_Objects/Array/values -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Ітератор - - Масив - - метод - - прототип -translation_of: Web/JavaScript/Reference/Global_Objects/Array/values ---- -
{{JSRef}}
- -

Метод values() повертає новий об'єкт ітератора масиву (Array Iterator), який містить значення кожного елемента масиву.

- -

{{EmbedInteractiveExample("pages/js/array-values.html")}}

- -
var a = ['a', 'б', 'в', 'г', 'ґ'];
-var iterator = a.values();
-
-console.log(iterator.next().value); // а
-console.log(iterator.next().value); // б
-console.log(iterator.next().value); // в
-console.log(iterator.next().value); // г
-console.log(iterator.next().value); // ґ
- -

Синтаксис

- -
arr.values()
- -

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

- -

Новий об'єкт ітератора масиву.

- -

Приклади

- -

Перебір за допомогою циклу for...of

- -
var arr = ['а', 'б', 'в', 'г', 'ґ'];
-var iterator = arr.values();
-
-for (let letter of iterator) {
-  console.log(letter);
-}
-
- -

Array.prototype.values є реалізацією за замовчуванням для Array.prototype[Symbol.iterator].

- -
Array.prototype.values === Array.prototype[Symbol.iterator]      //true
- -

TODO: please write about why we need it, use cases.

- -

Специфікації

- - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ES2015')}}Початкове визначення.
{{SpecName('ESDraft', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- -
- - -

{{Compat("javascript.builtins.Array.values")}}

-
- -

Див. також

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