@zlFast

Как правильно генерировать уникальный id?

Как на javascript правильно генерировать уникальные числа? То есть в массиве объекты, и у каждого объекта свой уникальный id, id от 0 до бесконечности, как правильно добавить в массив новый объект с уникальным id (которого нет в массиве)?
  • Вопрос задан
  • 14594 просмотра
Решения вопроса 2
@dmitryKovalskiy
программист средней руки
Они у вас последовательны? Тогда почему нельзя добавлять c id array.length+1 ?
Ответ написан
@IceJOKER
Web/Android developer
Создаете функцию, которая генерирует случайно число, смотрит есть ли такое число в массиве и если есть, то еще раз вызывает себя же, а если нет, добавляет это число в массив.
Простой алгоритм
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
profesor08
@profesor08 Куратор тега JavaScript
Ну раз у вас все id от 0 до бесконечности, то я вас огорчу. Свободных id не осталось.
Ответ написан
Комментировать
RubaXa
@RubaXa
Если вы хотите настоящий уникальный идентификатор на клиенте, то для этого нужно использовать GUID (Globally Unique Identifier): https://www.npmjs.com/package/node-uuid
Ответ написан
Комментировать
modestguy
@modestguy
full-stack web developer
а чем Math.random() не устраивает?
Ответ написан
Комментировать
@AlexandraWeather
тем, что случайные числа повторяются) они же случайные! может быть три семерки подряд.
У меня та же проблема: нужно создать массив объектов и генерить им уникальные id, чтобы без повторов. Числа от 1 до 25. Вариант "по порядку" не подходит и я не понимаю как его исполнить в рамках функции-конструктора
Ответ написан
Комментировать
@hx510b
"Я знаю, что ничего не знаю"
Я бы не изобретал велосипед. Считаю правильным воспользоваться отработанными решениями.
Например передавать в форму uuid с сервера.
Утилита uuidgen базируется на библиотеке libuuid.
Например, при вызове uuidgen с ключем -t , uuid базируется и на времени и уникальном ид системы, где была запущена утилита. Т.е. при такой генерации uuid одновременно на множестве серверов коллизия будет невозможна.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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