Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.07.2020, 07:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

voraa, ну вот, думал он подумает и что-то сделает, дабы понять, что решений может быть не одно, а тут бах и выложили готовое.
Ответить с цитированием
  #12 (permalink)  
Старый 10.07.2020, 07:54
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,692

Просто буквально в прошлом месяце делал похожее с массивами.
Столько то элементов обработать одним способом, потом столько то другим, потом опять сколько то первым и т.д.
Ответить с цитированием
  #13 (permalink)  
Старый 10.07.2020, 08:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от voraa
буквально в прошлом месяце делал похожее с массивами
Ну и не сложно же было? Основа этого решения простая же, нужно только чуток извилинами пошевелить и вспомнить школу, свой опыт он полезнее любой подсказки.
Ответить с цитированием
  #14 (permalink)  
Старый 10.07.2020, 10:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064


<!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>
Ответить с цитированием
  #15 (permalink)  
Старый 10.07.2020, 11:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Что-то слишком наворочено.

<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>
Ответить с цитированием
  #16 (permalink)  
Старый 10.07.2020, 11:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

рони, это пример в смысле для произвольных пропусков? Тогда наверное один раз реверс chsk, чтобы не перетряхивать постоянно массив chsk?
Ответить с цитированием
  #17 (permalink)  
Старый 10.07.2020, 11:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от laimas
это пример в смысле для произвольных пропусков?
это пример последовательной обработки только нужных блоков, использовать shift() конечно не оптимально, лучше через индекс, тут основной выигрыш в том что остальные элементы не затрагиваются, и for один из быстрых методов.
Ответить с цитированием
  #18 (permalink)  
Старый 10.07.2020, 11:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от рони
использовать shift() конечно не оптимально
Но ведь можно pop(), он просто будет урезать массив не перестраивая его.
Ответить с цитированием
  #19 (permalink)  
Старый 10.07.2020, 11:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от laimas
Тогда наверное один раз реверс chsk,
Сообщение от laimas
ведь можно pop(),
так понятнее, ок, да можно и так.
Ответить с цитированием
  #20 (permalink)  
Старый 10.07.2020, 11:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
QJuery стилизованные чекбоксы tiksi jQuery 2 15.05.2013 11:38
Отметить радио кнопку leny Общие вопросы Javascript 2 12.10.2011 15:22
Как пометить заголовок классом если все чекбоксы ниже включены? МаринаКрутакова jQuery 8 10.10.2011 07:32
Помогите вставить в форму не только чекбоксы но и выпадающий список seva_81 Серверные языки и технологии 3 20.09.2010 10:02
не могу открыжить все чекбоксы нажатием одного nenastiy Events/DOM/Window 11 23.05.2010 17:50