Деструктуризация массива JS — использование шаблона привязки в качестве остаточного свойства

MDN недавно обновил some of their docs, и я наткнулся на приведенный 9X_js ниже фрагмент кода. Может ли кто-нибудь 9X_javascript-dom объяснить, каков будет практический вариант 9X_javascript использования следующего?

Из MDN:

Остальным 9X_js свойством присваивания деструктуризации 9X_vanillajs массива может быть другой шаблон привязки 9X_ecmascript массива или объекта. Это позволяет одновременно 9X_vanilla-javascript распаковывать свойства и индексы массивов.

const [a, b, ...{ pop, push }] = [1, 2];
console.log(a, b); // 1 2
console.log(pop, push)

push() вызывается 9X_ecmascript для массива, так какой смысл распаковывать 9X_.js метод push() из массива? Я не могу придумать ни 9X_js одного практического применения для использования 9X_javascript-dom этого.

8
0
1
Общее количество ответов: 1

Ответ #1

Ответ на вопрос: Деструктуризация массива JS — использование шаблона привязки в качестве остаточного свойства

<субъективно>Это... не лучший пример 9X_javascript-library этой функции. :-D Это 9X_javascript-library работает, потому что оставшийся элемент 9X_javascript-execution создает новый массив, а затем шаблон деструктуризации 9X_javascript объекта { pop, push } выбирает эти свойства из этого 9X_js нового массива (не исходного массива).

Ближе 9X_javascript-library всего я могу подойти к полезному примеру, если 9X_javascript-disabled вы хотите знать сколько дополнительных элементов 9X_javascript-disabled помимо тех, которые вы хотели, но вам не 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-disabled я думаю, дело в том, что, хотя вы можете использовать 9X_ecmascript деструктурирование объекта/массива для остальных 9X_javascript-dom элементов, потому что это естественным образом 9X_vanillajs выпадает из того, как работают шаблоны деструктурирования, вряд 9X_javascript-disabled ли это будет так уж полезно.


Я должен отметить, что 9X_.js в более общем случае использование деструктуризации 9X_vanilla-js объекта в массиве действительно может быть 9X_vanilla-javascript полезным, но, вероятно, не применительно 9X_javascript-library к оставшемуся элементу. Это особенно полезно 9X_ecmascript для расширенных массивов, таких как тот, который 9X_javascript-dom вы получаете из RegExp.prototype.exec, который включает не только 9X_ecmascript элементы массива для совпадения и любые 9X_vanillajs значения группы захвата, но также index (где 9X_ecmascript произошло совпадение), input, groups и indices. Вы могли бы 9X_javascript-disabled хотеть те. Деструктуризация объектов в массиве 9X_vanilla-javascript позволяет получить нужные элементы, а также 9X_javascript-dom свойства, не являющиеся элементами, например:

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_javascript-dom полезно выделить пару элементов из середины:

const array = ["a", "b", "c", "d", "e", "f", "g", "h", "i"];
const {2: two, 7: seven} = array;
console.log(`two = ${two}, seven = ${seven}`);

15
0