2

JavaScriptでCRM 2011 GUIDを比較する方法、より良い/公式の方法はありますか

2e9565c4-fc5b-e211-993c-000c29208ee5=={2E9565C4-FC5B-E211-993C-000C29208EE5}

.replace().toLowerCase()?を使用せずに

最初のものは、XMLHttpRequest/JSON を介して取得されます。

JSON.parse(r.responseText).d.results[0].id 

2番目のものはフォームから取得されます:

Xrm.Page.getAttribute("field").getValue()[0].id
4

3 に答える 3

3

プリミティブ GUID タイプがないため、JavaScript で GUID を比較する公式の方法はありません。したがって、GUID を文字列として扱う必要があります。

replace()使用してはならずtoLowerCase()、正規表現を使用できる場合:

// "i" is for ignore case
var regExp = new RegExp("2e9565c4-fc5b-e211-993c-000c29208ee5", "i"); 

alert(regExp.test("{2E9565C4-FC5B-E211-993C-000C29208EE5}"));

おそらく、replace/toLowerCase() よりも遅くなります。

于 2013-02-21T12:42:22.583 に答える
1

node-uuid ( https://github.com/broofa/node-uuid ) ライブラリを使用して、文字列をバイトに解析した後にバイト比較を行うことができます。バイトは配列として返され、lodash _.difference メソッドを使用して比較できます。これは、GUID が同じケースを使用していない場合、または「-」ダッシュがない場合を処理します。

コーヒースクリプト:

compareGuids: (guid1, guid2) ->
    bytes1 = uuid.parse(guid1)
    bytes2 = uuid.parse(guid2)
    # difference returns [] for equal arrays
    difference = _.difference(bytes1, bytes2)
    return difference.length == 0

Javascript (更新):

compareGuids: function(guid1, guid2) {
    var bytes1, bytes2, difference;
    bytes1 = uuid.parse(guid1);
    bytes2 = uuid.parse(guid2);
    difference = _.difference(bytes1, bytes2);
    return difference.length === 0;
  }
于 2014-12-05T23:47:14.150 に答える