是否有一些更好/官方的方式,如何比较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
第二个来自表格:
Xrm.Page.getAttribute("field").getValue()[0].id
答案 0 :(得分:3)
没有官方方法来比较JavaScript中的GUID,因为没有原始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}"));
它可能比替换/ toLowerCase()慢。
答案 1 :(得分:1)
您可以使用node-uuid(https://github.com/broofa/node-uuid)库并在将字符串解析为字节后进行字节比较。字节作为数组返回,可以使用lodash _.difference方法进行比较。这将处理GUID没有使用相同案例或者他们没有' - '破折号。
Coffeescript:
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;
}
答案 2 :(得分:1)
var rgx = /[\{\-\}]/g;
function _guidsAreEqual(left, right) {
var txtLeft = left.replace(rgx, '').toUpperCase();
var txtRight = right.replace(rgx, '').toUpperCase();
return txtLeft === txtRight;
};