Привет всем!
В настоящее время я работаю, чтобы получить ввод пользователя и проанализировать его по-своему. Входные данные представляют целочисленные диапазоны или одиночные целые
Допустим, я получил следующий массив диапазонов:
const ranges = [`1-6`, `8`, `12-20-18`, `22-21`, `46-42-44`];
Теперь мне нужен полный список целых чисел, поэтому я написал этот фрагмент:
const list = ranges.reduce ((array, range) => {
console.log (array);
if (!range.incldues (`-`)) return array.push (parseInt (range)); // Single integer
const milestones = range.split (`-`).map (milestone => parseInt (milestone)),
min = Math.min (...milestones),
max = Math.max (...milestones);
for (let i = min; i <= max; i++) array.push (i);
console.log (array);
return array;
}, []);
Дело в том, что я быстро получил «Uncaught TypeError: array.push не является функцией», и console.logging моих переменных показал, что после первой итерации сокращения массив принял значение (int) 7, несмотря на то, что массив просто перед оператором возврата.
Вот иллюстрация
Может ли кто-нибудь указать, где это пошло не так? Как это предотвратить? И кроме того, если бы кто-то мог объяснить, ПОЧЕМУ это пошло не так, было бы идеально.
Спасибо!