From 29515e0bb7a3c7bf6783b03052ca79f2accd1923 Mon Sep 17 00:00:00 2001 From: 111111112 <70954573+mikhail-balandin@users.noreply.github.com> Date: Wed, 14 Aug 2024 20:17:15 +0500 Subject: [PATCH 1/2] var to const change var to const declaration according modern es standart --- .../global_objects/array/flat/index.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/files/ru/web/javascript/reference/global_objects/array/flat/index.md b/files/ru/web/javascript/reference/global_objects/array/flat/index.md index 7021afaf1a7e9b..b69715d997f132 100644 --- a/files/ru/web/javascript/reference/global_objects/array/flat/index.md +++ b/files/ru/web/javascript/reference/global_objects/array/flat/index.md @@ -10,7 +10,7 @@ slug: Web/JavaScript/Reference/Global_Objects/Array/flat ## Синтаксис ``` -var newArray = arr.flat(depth); +const newArray = arr.flat(depth); ``` ### Параметры @@ -27,19 +27,19 @@ var newArray = arr.flat(depth); ### Упрощение вложенных массивов ```js -var arr1 = [1, 2, [3, 4]]; +const arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2, 3, 4] -var arr2 = [1, 2, [3, 4, [5, 6]]]; +const arr2 = [1, 2, [3, 4, [5, 6]]]; arr2.flat(); // [1, 2, 3, 4, [5, 6]] -var arr3 = [1, 2, [3, 4, [5, 6]]]; +const arr3 = [1, 2, [3, 4, [5, 6]]]; arr3.flat(2); // [1, 2, 3, 4, 5, 6] -var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]]; +const arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]]; arr4.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ``` @@ -49,7 +49,7 @@ arr4.flat(Infinity); Метод flat удаляет пустые слоты из массива: ```js -var arr4 = [1, 2, , 4, 5]; +const arr4 = [1, 2, , 4, 5]; arr4.flat(); // [1, 2, 4, 5] ``` @@ -59,7 +59,7 @@ arr4.flat(); ### `reduce` и `concat` ```js -var arr1 = [1, 2, [3, 4]]; +const arr1 = [1, 2, [3, 4]]; arr1.flat(); // В одномерный массив @@ -89,7 +89,7 @@ flatDeep(arr, Infinity); ```js //не рекурсивное упрощение с использованием стэка -var arr1 = [1, 2, 3, [1, 2, 3, 4, [2, 3, 4]]]; +const arr1 = [1, 2, 3, [1, 2, 3, 4, [2, 3, 4]]]; function flatten(input) { const stack = [...input]; const res = []; @@ -112,7 +112,7 @@ flatten(arr1); // [1, 2, 3, 1, 2, 3, 4, 2, 3, 4] ```js //рекурсивно упрощаем массив function flatten(array) { - var flattend = []; + const flattend = []; (function flat(array) { array.forEach(function (el) { if (Array.isArray(el)) flat(el); From ace358119b8608514a403be9f996612f4828b7d9 Mon Sep 17 00:00:00 2001 From: Leonid Vinogradov Date: Sun, 18 Aug 2024 23:20:49 +0300 Subject: [PATCH 2/2] update examples, improve translation, remove odd sections --- .../global_objects/array/flat/index.md | 92 +++---------------- 1 file changed, 15 insertions(+), 77 deletions(-) diff --git a/files/ru/web/javascript/reference/global_objects/array/flat/index.md b/files/ru/web/javascript/reference/global_objects/array/flat/index.md index b69715d997f132..88466ea7a9755d 100644 --- a/files/ru/web/javascript/reference/global_objects/array/flat/index.md +++ b/files/ru/web/javascript/reference/global_objects/array/flat/index.md @@ -5,18 +5,19 @@ slug: Web/JavaScript/Reference/Global_Objects/Array/flat {{JSRef}} -Метод **`flat()`** возвращает новый массив, в котором все элементы вложенных подмассивов были рекурсивно "подняты" на указанный уровень depth. +Метод **`flat()`** экземпляров {{jsxref("Array")}} возвращает новый массив, в котором все элементы вложенных подмассивов рекурсивно "подняты" на указанный уровень. ## Синтаксис -``` -const newArray = arr.flat(depth); +```js-nolint +flat() +flat(depth) ``` ### Параметры - `depth` {{optional_inline}} - - : На сколько уровней вложенности уменьшается мерность исходного массива. По умолчанию 1. + - : Указывает, на сколько уровней вложенности уменьшается мерность исходного массива. По умолчанию 1. ### Возвращаемое значение @@ -24,7 +25,7 @@ const newArray = arr.flat(depth); ## Примеры -### Упрощение вложенных массивов +### Уплощение вложенных массивов ```js const arr1 = [1, 2, [3, 4]]; @@ -44,83 +45,20 @@ arr4.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ``` -### Упрощение и "дырки" в массивах - -Метод flat удаляет пустые слоты из массива: - -```js -const arr4 = [1, 2, , 4, 5]; -arr4.flat(); -// [1, 2, 4, 5] -``` - -## Альтернативы - -### `reduce` и `concat` - -```js -const arr1 = [1, 2, [3, 4]]; -arr1.flat(); - -// В одномерный массив -arr1.reduce((acc, val) => acc.concat(val), []); // [1, 2, 3, 4] +### Использование flat() для разреженных массивов -//или -const flatSingle = (arr) => [].concat(...arr); -``` +Метод `flat()` удаляет пустые слоты в массивах: ```js -// Для развёртывания многомерных массивов используем рекурсию, reduce и concat -const arr = [1, 2, [3, 4, [5, 6]]]; - -function flatDeep(arr, d = 1) { - return d > 0 - ? arr.reduce( - (acc, val) => - acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val), - [], - ) - : arr.slice(); -} - -flatDeep(arr, Infinity); -// [1, 2, 3, 4, 5, 6] -``` +const arr5 = [1, 2, , 4, 5]; +console.log(arr5.flat()); // [1, 2, 4, 5] -```js -//не рекурсивное упрощение с использованием стэка -const 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] -``` +const array = [1, , 3, ["a", , "c"]]; +console.log(array.flat()); // [ 1, 3, "a", "c" ] -```js -//рекурсивно упрощаем массив -function flatten(array) { - const flattend = []; - (function flat(array) { - array.forEach(function (el) { - if (Array.isArray(el)) flat(el); - else flattend.push(el); - }); - })(array); - return flattend; -} +const array2 = [1, , 3, ["a", , ["d", , "e"]]]; +console.log(array2.flat()); // [ 1, 3, "a", ["d", empty, "e"] ] +console.log(array2.flat(2)); // [ 1, 3, "a", "d", "e"] ``` ## Спецификации