В программировании может возникнуть случай, когда временные переменные используются, например, в алгоритмах сортировки, которые обычно преподаются в учебных программах по информатике (или используются на собеседованиях по программированию).
В следующем примере «пузырьковой сортировки» мы видим временную переменную (temp), используемую для хранения «inputArr[j]»:
let bubbleSort = (inputArr) => { let len = inputArr.length; for (let i = 0; i < len; i++) { for (let j = 0; j < len; j++) { if (inputArr[j] > inputArr[j + 1]) { let temp = inputArr[j]; inputArr[j] = inputArr[j + 1]; inputArr[j + 1] = temp; } } } return inputArr; };
С появлением ES6 (ECMAScript 6; 2015 г.); JavaScript представил синтаксис деструктурирующего присваивания.
Используя вышеупомянутое, мы можем устранить необходимость создания временной переменной и сократить три строки кода до одной.
Что выглядит так:
let bubbleSort = (inputArr) => { let len = inputArr.length; for (let i = 0; i < len; i++) { for (let j = 0; j < len; j++) { if (inputArr[j] > inputArr[j + 1]) { [inputArr[j], inputArr[j + 1]] = [inputArr[j + 1], inputArr[j]]; } } } return inputArr; };
В коде моей библиотеки table sorting; Я использую эту функцию совсем немного!
Например, при сортировке дат в различных форматах, таких как день/месяц/год (наиболее распространенный) и месяц/день/год в американском стиле и, наконец, в стандартном формате ISO 8601 год/месяц/день.
Как вы можете видеть в следующем отрывке; Я переупорядочиваю массивы, используя деструктурирование на основе используемого формата дат:
if (datesFormat === "mdy" || datesFormat === "dmy") { datesRegex = /^(\d\d?)[./-](\d\d?)[./-]((\d\d)?\d\d)/; } else if (datesFormat === "ymd") { datesRegex = /^(\d\d\d\d)[./-](\d\d?)[./-](\d\d?)/; } let [years, days, months] = [0, 0, 0]; let numberToSort = columnOfTd; if (regPos1 && regPos2 && regPos3) { if (datesFormat === "mdy") { [months, days, years] = [regPos1, regPos2, regPos3]; } else if (datesFormat === "ymd") { [years, months, days] = [regPos1, regPos2, regPos3]; } else { [days, months, years] = [regPos1, regPos2, regPos3]; } } numberToSort = Number( years + String(months).padStart(2, "0") + String(days).padStart(2, "0") ); } column.toBeSorted.push(`${numberToSort}#${i}`);
Если у вас есть вопросы; не стесняйтесь оставить комментарий ниже.