@Artem0071
Безработный mr. Junior

Как создать массив массивов?

(это для процедуры в вк)

Есть начальное число, например 1
Есть число, которое означает некий разрыв, например 9
И есть число, которое означает максимальное количество элементов в 1 массиве, например 3

всего единиц = 1 + 9 = 10

Значит должно получится:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

Как сделать такой алгоритм?
При условии, что можно использовать только while цикл

Сделал нечто такое:
while (currentId <= maxLoadedId) {
    if (tempToLoadIds.length > maxPerLoadIds - 1) {
        toAddIds.push(tempToLoadIds);
        tempToLoadIds = [];
    }
    
    tempToLoadIds.push(currentId);
    
    currentId = currentId + 1;
}

toAddIds.push(tempToLoadIds);


Вроде работает, но при "разрыве" больше 450 происходит
Runtime error occurred during code invocation: Too many operations


Мы точно знаем что числа идут последовательно и без пропусков
Уверен что можно сделать как то проще, но что-то не получается

Список доступных методов:
Поддерживаются:
арифметические операции
логические операции
создание массивов и списков ([X,Y])
parseInt и parseDouble
конкатенация (+)
конструкция if
фильтр массива по параметру (@.)
вызовы методов API, параметр length
циклы, используя оператор while
методы Javascript: slice, push, pop, shift, unshift, splice, substr, split
оператор delete
присваивания элементам маcсива, например: row.user.action = "test";
поиск в массиве или строке — indexOf, например: "123".indexOf(2) = 1, [1, 2, 3].indexOf(3) = 2. Возвращает -1, если элемент не найден.

  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BI0R0B0T
function vkProcedure(s,e,c){
	let t
	let r = []
	let i = 0
	while (i <= e) {
		if(i%c === 0) {
			if(t) { r.push(t) }
			t = [] 
		}
		t.push(s+i++)
	}
	if(t) { r.push(t) }
	return r
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы