Как преобразовать строку '1 1-4 1,4,6 12 7 20' в массив массивов, где каждый подмассив содержит числа в соответствии с определенными правилами: если числа представлены диапазоном, то он записывается, если числа просто перечислены через запятую, они также записываются в подмассив? Так, чтобы на выходе из '1 1-4 1,4,6 12 7 20' получилось [[1], [1,2,3,4], [1,4,6], [12], [7], [20]].
```js
const testData = '1 1-4 1,4,6 12 7 20';
const modifiedtestData = testData.split(' ')
console.log(modifiedtestData.map((item, index) => {
if (item.includes('-')) {
const splittedArr = item.split('')
const newArr = []
for (i = +splittedArr[0]; i <= splittedArr[splittedArr.length - 1]; i++) {
newArr.push(i.toString())
}
return newArr
} else if (item.includes(',')) {
return item.split(',')
}
else return [item]
}));
```
Приведенный вами код почти правильно работает, однако есть ошибка в строке, где происходит разбиение чисел на диапазон. Замените `const splittedArr = item.split('')` на `const splittedArr = item.split('-')`, чтобы правильно разделить числа в диапазоне.
Также внутри цикла замените `splitter` на `splittedArr`, чтобы корректно использовать разделенные числа.
Поправленный код будет выглядеть следующим образом:
```js
const testData = '1 1-4 1,4,6 12 7 20';
const modifiedtestData = testData.split(' ')
console.log(modifiedtestData.map((item, index) => {
if (item.includes('-')) {
const splittedArr = item.split('-')
const newArr = []
for (i = +splittedArr[0]; i <= +splittedArr[1]; i++) {
newArr.push(i.toString())
}
return newArr
} else if (item.includes(',')) {
return item.split(',')
}
else return [item]
}));
```
После внесения этих изменений, вы получите желаемый результат: `[[ '1' ], [ '1', '2', '3', '4' ], [ '1', '4', '6' ], [ '12' ], [ '7' ], [ '20' ]]`