我正在尝试在JavaScript中创建全局唯一标识符.我不确定所有浏览器上有哪些例程,"随机"和内置随机数生成器的种子等等.
GUID/UUID应至少为32个字符,并应保持在ASCII范围内,以避免传递它们时出现问题.
我想要一个5个字符的字符串,由从集合中随机挑选的字符组成[a-zA-Z0-9].
使用JavaScript执行此操作的最佳方法是什么?
我在一些代码中看到了这一点,我不知道它的作用:
var jdn = function(y, m, d) {
var tmp = (m <= 2 ? -1 : 0);
return ~~((1461 * (y + 4800 + tmp)) / 4) +
~~((367 * (m - 2 - 12 * tmp)) / 12) -
~~((3 * ((y + 4900 + tmp) / 100)) / 4) +
d - 2483620;
};
Run Code Online (Sandbox Code Playgroud)
什么是~~运营商吗?
我在Firefox-3.5.7/Firebug-1.5.3和Firefox-3.6.16/Firebug-1.6.2中观察到了这一点
当我开火萤火虫时:
var x = new Array(3)
console.log(x)
// [undefined, undefined, undefined]
var y = [undefined, undefined, undefined]
console.log(y)
// [undefined, undefined, undefined]
console.log( x.constructor == y.constructor) // true
console.log(
x.map(function() { return 0; })
)
// [undefined, undefined, undefined]
console.log(
y.map(function() { return 0; })
)
// [0, 0, 0]Run Code Online (Sandbox Code Playgroud)
这里发生了什么?这是一个错误,还是我误解了如何使用new Array(3)?
我正在使用D3.js. 我想找到一个等同于这个CSS类的SVG,如果文本流出其包含的div,它会添加省略号:
.ai-ellipsis {
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
-moz-binding: url(<q>assets/xml/ellipsis.xml#ellipsis</q>);
}
Run Code Online (Sandbox Code Playgroud)
这是我的SVG:
<g class="bar" transform="translate(0,39)">
<text class="label" x="-3" y="6.5" dy=".35em" text-anchor="start">Construction</text>
<rect height="13" width="123"></rect>
</g>
Run Code Online (Sandbox Code Playgroud)
它的生成如下:
barEnter.append("text").attr("class", "label")
.attr("x", -3).attr("y", function() { return y.rangeBand() / 2})
.attr("dy", ".35em").attr("text-anchor", "start")
.text(function(d) {
return d.Name;
});
Run Code Online (Sandbox Code Playgroud)
目前,文本溢出并与rect元素重叠.
有什么方法可以说"如果文字超过一定宽度,裁剪它并添加省略号"?
我(Math.random()*1e32).toString(36)用作一个简单的随机字符串生成器.它非常简单,运行良好,满足了我的需求(用于id的时间随机等)
在chrome,safari,firefox和ie Math.random()*1e32生成的数字如:8.357963780872523e+31:-)
(8.357963780872523e+31).toString(36)- > 221fr2y11ebk4cog84wok这正是我想要的.6.936gwtrpf69(e+20).我怎样才能得到相同的字符串221fr2y11ebk4cog84wok从8.357963780872523e+31一个跨浏览器的方式?
顺便说一句:我从这个帖子中得到了这个随机字符串的想法:JavaScript中的随机字母数字字符串?
我编写了一个非常慢的函数来生成从AA000到ZZ999的代码(按顺序而非随机).我已经得出结论,必须有一个更好的方法来做到这一点.有关如何加快速度的任何建议吗?
function generateAlphaNumeric(){
theAlphabet = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
resultArrray = [];
resultArrray2 = [];
teller = 0;
for(i in theAlphabet){
for(x in theAlphabet){
resultArrray[teller] = theAlphabet[i] + theAlphabet[x];
teller++;
}
}
teller = 0;
for(x = 0; x<10; x++){
for(y = 0; y<10; y++){
for(z = 0; z<10; z++){
resultArrray2[teller] = x.toString() + y.toString() +z.toString();
teller++;
}
}
}
teller = 0;
finalArray = [];
for(index in resultArrray){
for(i in resultArrray2){
finalArray[teller] = resultArrray[index] + resultArrray2[i];
teller++;
}
}
//console.log(resultArrray);
//console.log(resultArrray2);
console.log(finalArray); …Run Code Online (Sandbox Code Playgroud) 我一直在使用这段代码:
function stringGen()
{
var text = " ";
var charset = "abcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < len; i++ )
text += charset.charAt(Math.floor(Math.random() * charset.length));
return text;
}
Run Code Online (Sandbox Code Playgroud)
但到目前为止,它一直没有起作用.我究竟做错了什么?
提前谢谢你的帮助
javascript ×7
random ×2
arrays ×1
css ×1
d3.js ×1
guid ×1
map-function ×1
string ×1
svg ×1
uuid ×1