Просмотр полной версии : Как реализовать систему раздачи id как у функции SetInterval
Как реализовать систему раздачи id как у функции SetInterval. Собственно это и есть вопрос. Хотелось бы чтобы номера выдавались динамически тоесть если уже есть номера 1 2 3 4, то после удаления 2 номера - функция снова бы выдавала 2 - Чтобы не возникало переполнения номеров со временем. Подскажите, пожалуйста.
Интересует аспект производительности, так как номеров будет около 2000 и всё время бегать циклом в поиске нужного номера будет затратным по ресурсам.
по-моему, никак, а если писать такую функцию самому(которая бы делал переназначения), то она ещё больше грузить будет, чем перебор.
если уже есть номера 1 2 3 4, то после удаления 2 номера - функция снова бы выдавала 2 - Чтобы не возникало переполнения номеров со временем. О каком переполнении идет речь? Вам миллионов мало?
var idArr = new Array();
var emptyPlaces = new Array();
function register(obj) {
if(emptyPlaces.length > 0) {
var num = emptyPlaces.pop();
idArr[num] = obj;
return num;
} else {
idArr.push(obj);
return idArr.length - 1;
}
}
function unregister(id) {
idArr[id] = undefined;
emptyPlaces.push(id);
}
возьмите опыт из БД: пусть "2" было всего раз и больше никогда не будет, ничего страшного, переполнения все равно не достигните. Просто сделайте статическую переменную в классе, которая в конструкторе будет инкрементиться - это и будет Вашим ИД. Если важна производительность, то это Ваш выход имхо.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.