![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
10.07.2020, 07:43
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
voraa, ну вот, думал он подумает и что-то сделает, дабы понять, что решений может быть не одно, а тут бах и выложили готовое. ![](https://javascript.ru/forum/images/smilies/smile.gif)
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
10.07.2020, 07:54
|
![Аватар для voraa](https://javascript.ru/forum/image.php?u=69123&dateline=1640150450) |
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,754
|
|
Просто буквально в прошлом месяце делал похожее с массивами.
Столько то элементов обработать одним способом, потом столько то другим, потом опять сколько то первым и т.д.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
10.07.2020, 08:06
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от voraa
|
буквально в прошлом месяце делал похожее с массивами
|
Ну и не сложно же было? Основа этого решения простая же, нужно только чуток извилинами пошевелить и вспомнить школу, свой опыт он полезнее любой подсказки. ![](https://javascript.ru/forum/images/smilies/smile.gif)
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
10.07.2020, 10:32
|
![Аватар для рони](https://javascript.ru/forum/image.php?u=7416&dateline=1372796129) |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,134
|
|
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>checks</title>
</head>
<body>
<div id="block">
</div>
</body>
<script>
// Тут просто генерируем 50 чекбоксов
let s = '';
let n = 50;
for (let i=0; i<n; i++) s+=`${i}: <input type='checkbox' name='check'><br>`;
document.getElementById('block').innerHTML = s;
</script>
<script>
(function () {
const checkbox = document.querySelectorAll("INPUT[type=checkbox]");
const length = checkbox.length;
// 10 отметить, 20 пропустить, 10 отметить, 7 пропустить, 2 отметить
let chsk = [10, 20, 10, 7, 2];
let n = chsk.shift();
for (let i = 0; i < length; ) {
if(n--) checkbox[i++].checked = true;
else if(chsk.length > 1){
i += chsk.shift();
n = chsk.shift();
}
else break;
}
})();
</script>
</html>
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
10.07.2020, 11:11
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Что-то слишком наворочено.
<script>
var A = Array.from(Array(50), (x=1, i) => x+i),
L = 5,
B = [];
for(var i=0, k=L*L; i<k; ++i) {
B.push(A[Math.trunc(i/L)*L+i])
}
document.write(A+'\n'+B)
</script>
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
10.07.2020, 11:17
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
рони, это пример в смысле для произвольных пропусков? Тогда наверное один раз реверс chsk, чтобы не перетряхивать постоянно массив chsk?
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
10.07.2020, 11:24
|
![Аватар для рони](https://javascript.ru/forum/image.php?u=7416&dateline=1372796129) |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,134
|
|
Сообщение от laimas
|
это пример в смысле для произвольных пропусков?
|
это пример последовательной обработки только нужных блоков, использовать shift() конечно не оптимально, лучше через индекс, тут основной выигрыш в том что остальные элементы не затрагиваются, и for один из быстрых методов.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
10.07.2020, 11:27
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
использовать shift() конечно не оптимально
|
Но ведь можно pop(), он просто будет урезать массив не перестраивая его.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
10.07.2020, 11:29
|
![Аватар для рони](https://javascript.ru/forum/image.php?u=7416&dateline=1372796129) |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,134
|
|
Сообщение от laimas
|
Тогда наверное один раз реверс chsk,
|
Сообщение от laimas
|
ведь можно pop(),
|
так понятнее, ок, да можно и так.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
10.07.2020, 11:40
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
<script>
var A = Array.from(Array(50), (x=1, i) => x+i),
L = 5,
B = [];
for(var i=0; i<A.length; ++i) {
if(Math.trunc(i/L)&1) continue;
B.push(A[i])
}
document.write(B)
</script>
|
|
|
|