Деструктуризация массива JS — использование шаблона привязки в качестве остаточного свойства
MDN недавно обновил some of their docs, и я наткнулся на приведенный 9X_ecmascript ниже фрагмент кода. Может ли кто-нибудь 9X_javascript-library объяснить, каков будет практический вариант 9X_vanillajs использования следующего?
Из MDN:
Остальным 9X_ecmascript свойством присваивания деструктуризации 9X_vanillajs массива может быть другой шаблон привязки 9X_javascript-execution массива или объекта. Это позволяет одновременно 9X_javascript-execution распаковывать свойства и индексы массивов.
const [a, b, ...{ pop, push }] = [1, 2]; console.log(a, b); // 1 2 console.log(pop, push)
push()
вызывается 9X_vanillajs для массива, так какой смысл распаковывать 9X_.js метод push()
из массива? Я не могу придумать ни 9X_javascript-dom одного практического применения для использования 9X_javascript этого.
Ответ #1
Ответ на вопрос: Деструктуризация массива JS — использование шаблона привязки в качестве остаточного свойства
<�субъективно>Это... не лучший пример 9X_javascript-execution этой функции. :-D Это 9X_javascript работает, потому что оставшийся элемент 9X_javascript-library создает новый массив, а затем шаблон деструктуризации 9X_vanillajs объекта { pop, push }
выбирает эти свойства из этого 9X_javascript-disabled нового массива (не исходного массива).
Ближе 9X_js всего я могу подойти к полезному примеру, если 9X_ecmascript вы хотите знать сколько дополнительных элементов 9X_vanillajs помимо тех, которые вы хотели, но вам не 9X_.js нужен/нужен их фактический массив:
let a, b, length; [a, b, ...{ length }] = [1, 2]; console.log(length); // 0, there were no extra elements [a, b, ...{ length }] = [1, 2, 3]; console.log(length); // 1, there was one extra [a, b, ...{ length }] = [1, 2, 3, 4]; console.log(length); // 2, there were two extra
...но 9X_javascript я думаю, дело в том, что, хотя вы можете использовать 9X_javascript-dom деструктурирование объекта/массива для остальных 9X_ecmascript элементов, потому что это естественным образом 9X_ecmascript выпадает из того, как работают шаблоны деструктурирования, вряд 9X_javascript-execution ли это будет так уж полезно.
Я должен отметить, что 9X_javascript-library в более общем случае использование деструктуризации 9X_vanilla-js объекта в массиве действительно может быть 9X_.js полезным, но, вероятно, не применительно 9X_javascript-disabled к оставшемуся элементу. Это особенно полезно 9X_vanillajs для расширенных массивов, таких как тот, который 9X_vanilla-js вы получаете из RegExp.prototype.exec
, который включает не только 9X_.js элементы массива для совпадения и любые 9X_vanillajs значения группы захвата, но также index
(где 9X_js произошло совпадение), input
, groups
и indices
. Вы могли бы 9X_vanillajs хотеть те. Деструктуризация объектов в массиве 9X_vanilla-javascript позволяет получить нужные элементы, а также 9X_javascript-execution свойства, не являющиеся элементами, например:
const str = "an example string"; const match = /example/.exec(str); if (match) { const {0: matched, index } = match; console.log(`Matched ${JSON.stringify(matched)} at index ${index}.`); }
Также 9X_vanillajs полезно выделить пару элементов из середины:
const array = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]; const {2: two, 7: seven} = array; console.log(`two = ${two}, seven = ${seven}`);
-
13
-
6
-
6
-
12
-
38
-
9
-
5
-
18
-
5
-
5
-
6
-
8
-
5
-
7
-
41
-
10
-
10
-
27
-
9
-
20
-
15
-
12
-
41
-
8
-
9
-
12
-
43
-
4
-
7
-
24
-
3
-
20
-
9
-
23
-
11
-
10
-
7
-
4
-
5
-
25
-
6
-
11
-
10
-
86
-
4
-
4
-
25
-
20
-
13
-
8