uniqid () в javascript / jquery? - PullRequest
       25

uniqid () в javascript / jquery?

7 голосов
/ 02 февраля 2011

что эквивалентно этой функции в javascript:

http://php.net/manual/en/function.uniqid.php

В основном мне нужно сгенерировать случайный идентификатор, который выглядит как: a4245f54345 и начинается с буквенного символа (такЯ могу использовать его как идентификатор CSS)

Ответы [ 9 ]

12 голосов
/ 02 февраля 2011

Попробуйте веб-сайт PHPJS, в частности страницу для uniqid

8 голосов
/ 02 февраля 2011

Попробуйте это (Работа в php).

$prefix = chr(rand(97,121));  
$uniqid =  $prefix.uniqid(); // $uniqid = uniqid($prefix);

Попробуйте это для JavaScript ::

var n = Math.floor(Math.random() * 11);
var k = Math.floor(Math.random() * 1000000);
var m = String.fromCharCode(n) + k;
6 голосов
/ 03 февраля 2018

Я использовал это ...

Я использую его точно так же, как если бы это было в PHP Оба возвращают один и тот же результат.

function uniqid(a = "",b = false){
    var c = Date.now()/1000;
    var d = c.toString(16).split(".").join("");
    while(d.length < 14){
        d += "0";
    }
    var e = "";
    if(b){
        e = ".";
        var f = Math.round(Math.random()*100000000);
        e += f;
    }
    return a + d + e;
}
4 голосов
/ 13 мая 2015

Все ответы здесь (кроме phpjs) не генерируют уникальные идентификаторы, потому что они основаны на случайности.Random не уникален!

простое решение:

window.unique_id_counter = 0 ;
var uniqid = function(){
    var id ;
    while(true){
        window.unique_id_counter++ ;
        id = 'uids_myproject_' + window.unique_id_counter ;
        if(!document.getElementById(id)){
            /*you can remove the loop and getElementById check if you 
              are sure that noone use your prefix and ids with this 
              prefix are only generated with this function.*/
            return id ;
        }
    }
}

Добавить динамический префикс легко, если это необходимо.Просто замените unique_id_counter на массив, хранящий счетчики для каждого префикса.

2 голосов
/ 02 февраля 2011
<html>
<head>
<script type="text/javascript">
function generateSerial(len) {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    var string_length = 10;
    var randomstring = '';

    for (var x=0;x<string_length;x++) {

        var letterOrNumber = Math.floor(Math.random() * 2);
        if (letterOrNumber == 0) {
            var newNum = Math.floor(Math.random() * 9);
            randomstring += newNum;
        } else {
            var rnum = Math.floor(Math.random() * chars.length);
            randomstring += chars.substring(rnum,rnum+1);
        }

    }
    alert(randomstring);
}
generateSerial(8);
</script>
</head>
<body>

</body>
</html>

Это немного запутанно, но я уверен, что вы понимаете суть!
Пример: http://jsfiddle.net/Ng4tB/

2 голосов
/ 02 февраля 2011

Реальный вопрос в том, нужен ли UUID для соответствия RFC 4122? Похоже, ваш вопрос подсказывает, что вы этого не делаете, поэтому не составит труда создать функцию, основанную просто на Math.random (), для генерации идентификаторов подобного типа. Кроме того, это будет намного быстрее, чем реализация phpJS.

0 голосов
/ 05 июля 2019

Нашел это:

https://github.com/makeable/uuid-v4.js/blob/master/uuid-v4.js

и слегка модифицировал это:

function uniqid(length){
  var dec2hex = [];
  for (var i=0; i<=15; i++) {
    dec2hex[i] = i.toString(16);
  }

  var uuid = '';
  for (var i=1; i<=36; i++) {
    if (i===9 || i===14 || i===19 || i===24) {
      uuid += '-';
    } else if (i===15) {
      uuid += 4;
    } else if (i===20) {
      uuid += dec2hex[(Math.random()*4|0 + 8)];
    } else {
      uuid += dec2hex[(Math.random()*16|0)];
    }
  }

  if(length) uuid = uuid.substring(0,length);
  return uuid;
}

отлично работает.

0 голосов
/ 04 апреля 2019

Underscore.js имеет метод uniqueid()
https://underscorejs.org/#uniqueId

_.uniqueId([prefix])
Создайте глобально уникальный идентификатор для моделей на стороне клиента или элементов DOM, которым он нужен,Если префикс передан, к нему будет добавлен идентификатор.

_.uniqueId('contact_');  
=> 'contact_104'
0 голосов
/ 28 декабря 2018
function uniqId(prefix) {
    if (window.performance) {
        var s = performance.timing.navigationStart;
        var n = performance.now();
        var base = Math.floor((s + Math.floor(n))/1000);
    } else {
        var n = new Date().getTime();
        var base = Math.floor(n/1000);
    }   
    var ext = Math.floor(n%1000*1000);
    var now = ("00000000"+base.toString(16)).slice(-8)+("000000"+ext.toString(16)).slice(-5);
    if (now <= window.my_las_uid) {
        now = (parseInt(window.my_las_uid?window.my_las_uid:now, 16)+1).toString(16);
    }
    window.my_las_uid = now;
    return (prefix?prefix:'')+now;
}

он генерируется по "той же" цене, что и PHP uniqId () - время, кодированное в микросекундах

...