我需要存储一组元素.我需要的是功能
我选择了HashSet(C#),因为它运行快速删除元素的方法(hashSet.remove(element)),添加集合(hashSet.UnionWith(anotherHashSet))和HashSet的性质保证没有重复,所以要求1到3是照顾的.
我发现获得随机元素的唯一方法是
Object object = hashSet.ElementAt(rnd.Next(hashSet.Count));
Run Code Online (Sandbox Code Playgroud)
但这非常慢,因为我为地图的每个像素调用一次(从多个起点创建随机洪水填充;此刻mapize 500x500但我想要更大)并且hashset包含相当多的项目.(一项快速测试显示,在再次收缩之前,它会爆发5752个条目.)
分析(CPU采样)告诉我,我的ElementAt调用占用了50%以上.
我意识到在一个大的hashset上运行500x500并不是一件容易的事,但是其他操作(Remove和UnionWith)和ElementAt一样被调用,所以主要问题似乎是操作而不是调用次数.
我模糊地理解为什么从HashSet中获取某个元素是非常昂贵的(与从列表或其他有序数据结构中获取它相比,但我只想要一个随机选择.它真的很难以且没有办法解决它?我的目的是否有更好的数据结构?
将所有内容更改为列表并没有帮助,因为现在其他方法成为瓶颈而且需要更长的时间.
将HashSet转换为数组并从那里选择我的随机元素预计无济于事,因为从数组中选择一个随机元素很快,首先将hashset转换为数组需要比运行hashSet.ElementAt更长的时间.
如果你想更好地理解我想要做的事情:我的问题和答案的链接.
所以我想在按下html定义的按钮时调用一个函数.问题是我无法访问/找到它,控制台记录错误"引用错误:函数未定义".
我的output.js(合并和编译的typescript)的精简版布局如下所示:
window.onload = function () {
var game = new SpaceGen.Game();
};
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
var SpaceGen;
(function (SpaceGen) {
var Game = (function (_super) {
__extends(Game, _super);
function Game() {
_super.call(this, 512, 640, Phaser.AUTO, 'content');
this.state.add('state_World', SpaceGen.World, false);
this.state.start('state_World');
}
return Game;
})(Phaser.Game);
SpaceGen.Game = Game;
})(SpaceGen …
Run Code Online (Sandbox Code Playgroud) 在我的页面上,当<a>
单击指定时,页面的另一部分应该更改.在我的情况下,我现在正试图淡出图像(为了显示第一个背后的图像),但我尝试了不同的更改(更改z-index(带.css
)或src(使用.attr
) ).
我确定事件不是问题,它是触发器.我甚至可以使用以下方法:
<a onclick='$("img").toggleClass("active")' class="wr-nav-prev">
Run Code Online (Sandbox Code Playgroud)
但是因为我对javascript(和jQuery)真的很新,所以我不想以这种方式解决.
试着这样做:
$(".wr-nav-next").click(function(){
$("img").toggleClass("active");
});
Run Code Online (Sandbox Code Playgroud)
不会工作,我找不到原因.我改变了选择器大约一百次(<a>
围绕一个跨度和一个div).
我希望你已经看到了问题,并在你笑完之后告诉我我的错误!:)
如果没有,也许我的代码的那些部分会有所帮助:在你需要看到它的样子的情况下:我试图重建这个名为"使用CSS3的圆形导航效果"的页面/示例来自Codrops的Mary Lou
缺少几行(如css链接).我很确定它们并不重要.
<script type="text/javascript" src="jquery-1.7.min.js"></script>
<script type="text/javascript" src="centeritem.js"></script>
<script type="text/javascript">
$(document).ready(function() {
CenterItem('#wr');
});
$(window).resize(function() {
CenterItem('#wr');
});
$(".wr-nav-next").click(function(){
$("img").toggleClass("active");
});
</script>
</head>
<body>
<div id="wr">
<div class="wr-nav">
<a onclick='$("img").toggleClass("active")' class="wr-nav-prev">
<span>Previous picture</span>
<div></div>
</a>
<a class="wr-nav-next">
<span>Next picture</span>
<div></div>
</a>
</div>
<div>
<img class="active" src="Images/large/1.jpg">
<img src="Images/large/2.jpg">
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
c# ×1
function ×1
hashset ×1
html ×1
javascript ×1
jquery ×1
onclick ×1
performance ×1
random ×1
typescript ×1