{"id":2388,"date":"2017-03-27T17:56:01","date_gmt":"2017-03-27T12:26:01","guid":{"rendered":"https:\/\/www.wikitechy.com\/technology\/?p=2388"},"modified":"2018-10-24T10:14:04","modified_gmt":"2018-10-24T04:44:04","slug":"create-guid-uuid-javascript","status":"publish","type":"post","link":"https:\/\/www.wikitechy.com\/technology\/create-guid-uuid-javascript\/","title":{"rendered":"Create GUID  UUID in JavaScript"},"content":{"rendered":"<h3 id=\"guid\"><span style=\"color: #800000;\"><b>GUID :<\/b><\/span><\/h3>\n<p>A <strong>GUID<\/strong>\u00a0(Global Unique Identifier) is Microsoft\u2019s implementation of a unique identifier\u00a0<strong>(UUID)<\/strong>.<\/p>\n<ul>\n<li>In its simplest form, Guid lets we generate raw <strong>GUID<\/strong> formatted <a href=\"https:\/\/www.wikitechy.com\/technology\/convert-string-integer-javascript\/\" target=\"_blank\" rel=\"noopener\">strings<\/a>:<\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">Guid.raw();<br\/>\/\/ -&gt; &#039;6fdf6ffc-ed77-94fa-407e-a7b86ed9e59d&#039;<\/code><\/pre> <\/div>\n<ul>\n<li>Let&#8217;s generate a new Guid instance.<\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var guid = Guid.create();<\/code><\/pre> <\/div>\n[ad type=&#8221;banner&#8221;]\n<ul>\n<li>We&#8217;ve now got an <a href=\"https:\/\/www.wikitechy.com\/technology\/detecting-undefined-object-property\/\" target=\"_blank\" rel=\"noopener\">object<\/a> which we can work with programmatic manner. Lets check the validity of our Guid using the built-in validator :<\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">Guid.isGuid(guid);<br\/>\/\/ -&gt; true<br\/>Guid.value;<br\/>\/\/ -&gt; &#039;6fdf6ffc-ed77-94fa-407e-a7b86ed9e59d&#039;<\/code><\/pre> <\/div>\n<ul>\n<li>A handy bit of functionality is that its <a href=\"https:\/\/www.wikitechy.com\/technology\/java-programming-print-possible-strings-can-made-placing-spaces\/\" target=\"_blank\" rel=\"noopener\">toString<\/a> method returns the string value.<\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var itemUrl = &quot;http:\/\/whatever.com\/items\/&quot; + guid;<br\/>\/\/ -&gt; &#039;http:\/\/whatever.com\/items\/6fdf6ffc-ed77-94fa-407e-a7b86ed9e59d&#039;<\/code><\/pre> <\/div>\n<ul>\n<li>If we need a placeholder Guid, or a value to represent a non-GUID, use the <a href=\"https:\/\/www.wikitechy.com\/technology\/java-inner-class-static-nested-class\/\" target=\"_blank\" rel=\"noopener\">static<\/a> EMPTY property:<\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">Guid.EMPTY;<br\/>\/\/ -&gt; &#039;00000000-0000-0000-0000-000000000000&#039;<\/code><\/pre> <\/div>\n<ul>\n<li>Once we have a Guid object, we can&#8217;t change its value:<\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">guid.value = &quot;go suck it, guid!&quot;<br\/>guid.value;<br\/>\/\/ -&gt; &#039;6fdf6ffc-ed77-94fa-407e-a7b86ed9e59d\u2018<\/code><\/pre> <\/div>\n<ul>\n<li>To instantiate an Guid object using an existing GUID string, use the <a href=\"https:\/\/www.wikitechy.com\/technology\/java-constructor-tutorial-code-examples\/\" target=\"_blank\" rel=\"noopener\">constructor<\/a>:<\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var guid = new Guid(&#039;6fdf6ffc-ed77-94fa-407e-a7b86ed9e59d&#039;);<\/code><\/pre> <\/div>\n<ul>\n<li>we can check the equality of two different Guid objects using the <b>equals<\/b> instance method.<\/li>\n<li>Compare a Guid object to a GUID string:<\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">guid.equals(&#039;6fdf6ffc-ed77-94fa-407e-a7b86ed9e59d&#039;);<br\/>\/\/ -&gt; true<\/code><\/pre> <\/div>\n<ul>\n<li>Compare two Guid objects:<\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">guid.equals(new Guid(&#039;6fdf6ffc-ed77-94fa-407e-a7b86ed9e59d&#039;));<br\/>\/\/ -&gt; true<\/code><\/pre> <\/div>\n<h3 id=\"commonjs-module\"><span style=\"color: #0000ff;\"><b>CommonJS Module:<\/b><\/span><\/h3>\n<p>&nbsp;<\/p>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">exports.generate = function()<br\/>{<br\/>    var guid = &#039;xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx&#039;.replace(\/[xy]\/g, function(c) <br\/>{<br\/>        var r = Math.random()*16|0, v = c == &#039;x&#039; ? r : (r&amp;0x3|0x8);<br\/>         return v.toString(16);<br\/>    });     <br\/>    return guid;<br\/>};<\/code><\/pre> <\/div>\n[ad type=&#8221;banner&#8221;]\n<h2 id=\"uuid\"><span style=\"color: #800080;\"><b>UUID:<\/b><\/span><\/h2>\n<ul>\n<li>\u201c<strong>Universally Unique Identifier<\/strong> (UUID) is an identifier standard used in software construction, standardized by the Open Software Foundation (OSF) as part of the Distributed Computing Environment (DCE).\u201d<\/li>\n<li>A UUID is a <strong>16-octet<\/strong> (128-bit) number.<\/li>\n<li>A UUID is represented by 32 lowercase hexadecimal digits and it displayed in 5 groups separated by hyphens(-).<\/li>\n<li>This represent in form of 8-4-4-4-12 for a total of 36 characters (32 alphanumeric characters and four hyphens).<\/li>\n<li>Simple, fast generation of\u00a0<b>RFC4122<\/b>\u00a0UUIDS.<\/li>\n<\/ul>\n<h3 id=\"commonjs-module-2\"><span style=\"color: #0000ff;\"><b>CommonJS Module:<\/b><\/span><\/h3>\n<p><span style=\"color: #000000;\"><b>npm<\/b><b> install uuid<\/b><\/span><\/p>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">\/\/ Generate a v1 UUID (time-based) <br\/>const uuidV1 = require(&#039;uuid\/v1&#039;);<br\/>uuidV1(); \/\/ -&gt; &#039;6c84fb90-12c4-11e1-840d-7b25c5ee775a&#039; <br\/> \/\/ Generate a v4 UUID (random) <br\/>const uuidV4 = require(&#039;uuid\/v4&#039;);<br\/>uuidV4(); \/\/ -&gt; &#039;110ec58a-a0f2-4ac4-8393-c866d813b8d1&#039; <\/code><\/pre> <\/div>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">uuid.v1([options [, buffer [, offset]]])<\/code><\/pre> <\/div>\n<ul>\n<li>To Generate and return a RFC4122 v1 (timestamp-based) UUID.<\/li>\n<li><span style=\"color: #000000;\"><b>options <\/b><\/span>&#8211; (Object) Optional uuid state to apply.<\/li>\n<\/ul>\n<h3 id=\"properties-may-include-the-following\"><span style=\"color: #003366;\"><b>Properties may include the following:<\/b><\/span><\/h3>\n<ul>\n<li><span style=\"color: #000000;\"><b>node<\/b> &#8211;<\/span> (Array) Node id as Array of 6 bytes . Default: Randomly generated ID.<\/li>\n<li><span style=\"color: #000000;\"><b>clockseq<\/b><\/span> &#8211; (Number between 0 &#8211; 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.<\/li>\n<li><span style=\"color: #000000;\"><b>msecs<\/b><\/span> &#8211; (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.<\/li>\n<li><span style=\"color: #000000;\"><b>nsecs<\/b><\/span> &#8211; (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if msecs is unspecified.<\/li>\n<li><span style=\"color: #000000;\"><b>Default<\/b>:<\/span> internal uuid counter is used.<\/li>\n<li><span style=\"color: #000000;\"><b>buffer<\/b><\/span> &#8211; (Array | Buffer) Array or buffer where UUID bytes are to be written.<\/li>\n<li><span style=\"color: #000000;\"><b>offset<\/b><\/span> &#8211; (Number) Starting index in buffer at which to begin writing.<\/li>\n<\/ul>\n<h3 id=\"example1-generate-string-uuid-with-fully-specified-options\"><span style=\"color: #ff00ff;\"><strong>Example1<\/strong>: <\/span>Generate string UUID with fully-specified options<\/h3>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">uuid.v1(<br\/>{<br\/>  node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],<br\/>  clockseq: 0x1234,<br\/>  msecs: new Date(&#039;2011-11-01&#039;).getTime(),<br\/>  nsecs: 5678<br\/>}<br\/>);   \/\/ -&gt; &quot;710b962e-041c-11e1-9234-0123456789ab&quot; <\/code><\/pre> <\/div>\n<h3 id=\"example2-in-place-generation-of-two-binary-ids\"><span style=\"color: #ff00ff;\"><b>Example2<\/b>:<\/span> In-place generation of two binary IDs<\/h3>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">\/\/ Generate two ids in an array <br\/>const arr = new Array(32); \/\/ -&gt; [] <br\/>uuid.v1(null, arr, 0);   \/\/ -&gt; [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] <br\/>uuid.v1(null, arr, 16);  \/\/ -&gt; [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] <\/code><\/pre> <\/div>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">JAVASCRIPT CODE<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">uuid.v4([options [, buffer [, offset]]])<\/code><\/pre> <\/div>\n<ul>\n<li>To Generate and return a RFC4122 v4 UUID.<\/li>\n<li><span style=\"color: #000000;\"><b>options<\/b><\/span> &#8211; (Object) Optional uuid state to apply.<\/li>\n<\/ul>\n<h3 id=\"properties\"><span style=\"color: #003366;\"><b>Properties:<\/b><\/span><\/h3>\n<ul>\n<li><span style=\"color: #000000;\"><b>random<\/b> &#8211; (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values<\/span><\/li>\n<li><span style=\"color: #000000;\"><b>rng<\/b> \u2013<\/span>\n<ul>\n<li><span style=\"color: #000000;\">(Function) Random # generator to use.<\/span><\/li>\n<li><span style=\"color: #000000;\">Set to one of the built-in generators &#8211; uuid.mathRNG (all platforms), uuid.nodeRNG (node.js only), uuid.whatwgRNG (WebKit only) &#8211; or a custom function that returns an array[16] of byte values.<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"color: #000000;\"><b>buffer<\/b> &#8211; (Array | Buffer) <a href=\"https:\/\/www.wikitechy.com\/technology\/cc-programming-maximum-of-all-subarrays-of-size-k\/\" target=\"_blank\" rel=\"noopener\">Array<\/a> or buffer where UUID bytes are to be written.<\/span><\/li>\n<li><span style=\"color: #000000;\"><b>offset <\/b>&#8211; (Number) Starting index in buffer at which to begin writing.<\/span><\/li>\n<\/ul>\n<h3 id=\"example1-generate-string-uuid-with-fully-specified-options-2\"><span style=\"color: #000000;\"><span style=\"color: #ff00ff;\"><b>Example1: <\/b><\/span>Generate string UUID with fully-specified options<\/span><\/h3>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">javascript code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">uuid.v4(<br\/>{<br\/>  random: [<br\/>    0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,<br\/>    0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36<br\/>  ]<br\/>}<br\/>);<br\/>\/\/ -&gt; &quot;109156be-c4fb-41ea-b1b4-efe1671c5836&quot; <\/code><\/pre> <\/div>\n<h3 id=\"example2-generate-two-ids-in-a-single-buffer\"><span style=\"color: #000000;\"><span style=\"color: #ff00ff;\"><b>Example2: <\/b><\/span>Generate two IDs in a single buffer<\/span><\/h3>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">javascript code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">const buffer = new Array(32); \/\/ (or &#039;new Buffer&#039; in node.js) <br\/>uuid.v4(null, buffer, 0);<br\/>uuid.v4(null, buffer, 16);<\/code><\/pre> <\/div>\n<h2 id=\"how-to-create-a-guid-uuid-in-javascript\"><span style=\"color: #800080;\"><b>How to Create a GUID \/ UUID in Javascript<\/b><\/span><\/h2>\n<p><b>\u00a01.<\/b>To create an rfc4122 version 4 compliant guid<\/p>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">javascript code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">function createGuid()<br\/>{<br\/>    return &#039;xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx&#039;.replace(\/[xy]\/g, function(c)<br\/> {<br\/>        var r = Math.random()*16|0, v = c === &#039;x&#039; ? r : (r&amp;0x3|0x8);<br\/>        return v.toString(16);<br\/>    });<br\/>}<\/code><\/pre> <\/div>\n<h3 id=\"usage\"><span style=\"color: #339966;\"><b>Usage:<\/b><\/span><\/h3>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">javascript code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var uuid = createGuid();<br\/>&gt;&gt;&gt; &quot;e2ece964-0315-4b91-b411-20f9868ce7d4&quot;<\/code><\/pre> <\/div>\n[ad type=&#8221;banner&#8221;]\n","protected":false},"excerpt":{"rendered":"<p>GUID : A GUID\u00a0(Global Unique Identifier) is Microsoft\u2019s implementation of a unique identifier\u00a0(UUID). In its simplest form, Guid lets we generate raw GUID formatted strings: Let&#8217;s generate a new Guid instance. [ad type=&#8221;banner&#8221;] We&#8217;ve now got an object which we can work with programmatic manner. Lets check the validity of our Guid using the built-in [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[275],"tags":[5648,5643,5638,5635,5649,5637,5642,5641,5639,5647,5645,5651,5644,5646,5650,5640,5636],"class_list":["post-2388","post","type-post","status-publish","format-standard","hentry","category-javascript","tag-angular-guid","tag-create-a-guid-uuid-in-javascript","tag-create-a-guid-in-javascript","tag-create-guid-uuid-in-javascript","tag-generate-guid-java","tag-generate-guid-using-javascript","tag-generating-guids-in-javascript","tag-guid","tag-how-to-create-a-guid-uuid-in-javascript","tag-javascript-generate-unique-number","tag-javascript-uuid-library","tag-jquery-generate-unique-id","tag-jquery-guid","tag-nodejs-guid","tag-react-uuid","tag-uuid","tag-uuid-generator"],"_links":{"self":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts\/2388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/comments?post=2388"}],"version-history":[{"count":0,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts\/2388\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/media?parent=2388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/categories?post=2388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/tags?post=2388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}