(см. Пример ниже, чтобы полностью понять, что я спрашиваю)
У меня есть массив элементов, в которые я буду помещать другие элементы и исключать их в зависимости от выбора пользователя.Этот массив всегда имеет «активный набор» смежных элементов, состоящий не более чем из 30 элементов (и он составляет менее 30, если общий набор элементов составляет менее 30, в противном случае он должен быть заполнен).Пользователь может изменить начало активного набора.
Что я хочу знать, так это то, что является «самым чистым» кодом и наиболее эффективным способом проверки того, попадают ли новые элементы, добавленные / удаленные из списка, в список.активный набор, частично или полностью?(Кроме того, если в настоящее время всего 10 предметов, что делает элементы активного набора 0-9, и они добавляют 10 предметов перед предметом 0 - что превращает предмет 0 в предмет 10 - тогда я хочу знать, что нужно изменитьактивный набор для нового элемента от 0 до 19)
ПРИМЕР:
//For this example, I'm making the active set be 10 items so I can write less
var activeSetLength = 10;
//The total set
var allItems = [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o" ];
//First item in active set (in this example, this makes "m" the last active item)
var activeSet = allItems.slice( 3, 3 + activeSetLength );
/*
* Now imagine the user is trying to add items into our list, how best do I handle
* figuring out whether to add them to the activeset list?.
*/
//Adding items into list at position 1 (so only some of these will now be in the active set)
addItems( [ "one", "two", "three", "four" ], 1 );
Пожалуйста, дайте мне знать, если вам нужно больше объяснений, так как это может быть не самый ясный вопрос.Спасибо!
ПРИМЕЧАНИЕ. В "реальном мире" мой activeSet реализован как узел DOM, поэтому элементы в нем изменяются через appendChild / insertBefore / removeChild (это примечание добавлено для пояснения).