Javascript 代码帮助 - 返回错误
Javascript code help - Wrong return
所以我正在研究这个脚本。当我完成它时,它应该用于制作 2 组和 2 组。但无论如何;脚本开头的"input"数组将从我的HTML文件中获取22个不同的输入。作为标准,我给了他们值 1-22。问题是我的两个块"第一个数字"和"第二个数字"效果不佳:它们没有返回正确的数字。因为我希望每个升降机[x]都使用一次!不是2次,不是0次,一次!这些块像其中一些一样返回两次,其中一些甚至没有被使用。那么我该如何解决这个问题呢?
function Calculate(){
var elev = [];
var inputs = document.getElementsByName("txt");
for(i=0; i<inputs.length; i++) {
elev[i] = {
"Value": inputs[i].value,
"Used": false
};
}
function shuffle(elev){
var len = elev.length;
for(i=1; i<len; i++){
j = ~~(Math.random()*(i+1));
var temp = elev[i];
arr[i] = elev[j];
arr[j] = temp;
}
}
for(var v=0; v<1; v++) {
shuffle(elev);
document.write(elev + '<br/>'n');
}}
是的,我对编程还是新手,我只是想学习我能学到的东西。
通过做费舍尔-耶茨洗牌解决了问题。
洗牌数组并迭代它的想法是正确的,但是,通过抛硬币比较器进行排序(常见的错误实现;由另一个答案建议)并不是洗牌数组的正确方法; 它会产生非常偏斜的结果,甚至不能保证完成。
除非你愿意获取下划线.js(arr = _.shuffle(arr)
),否则建议使用费舍尔-耶茨洗牌:
function shuffle(arr){
var len = arr.length;
for(var i=1; i<len; i++){
var j = ~~(Math.random()*(i+1)); // ~~ = cast to integer
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
...
shuffle(elev);
for(var i=0; i<elev.length; i++){
//do something with elev[i]
console.log(elev[i].Value);
}
另外,请注意,对象字段应该是小写的,而不是大写的(value', not 'Value'). Also, the
Used' 字段不应该是必需的,因为您现在按顺序迭代。另外,您是否有机会使用值数组?它们似乎是对象中唯一的字段。
另外,不要使用 document.write()。在页面加载后使用时,它不会按预期工作。如果你想在文档中附加一些东西,你讨厌jQuery和其他框架,你不想走很长的路来创建和组合DOM节点,document.body.innerHTML +=
仍然比document.write()
更好(但仍然考虑附加DocumentFragment
s')。
演示:http://jsfiddle.net/honnza/2GSDd/1/
您只获取一次随机数,如果尚未使用它们,则对其进行处理。
我建议洗牌数组(elev.sort(function() {return Math.random()-0.5})
),然后只是迭代结果而不用进一步的随机数。
- CKFinder 3为所选文件返回错误的URL
- WebView返回错误的window.innerHeight
- 使用ajax上传的文件返回错误,但使用c#在asp.net的服务器端正常提交的文件
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- sqlite查询返回错误-can'我不知道为什么
- Javascript返回错误的Date值(NodeJS)
- javascript getDate getMonth返回错误的月份
- 函数返回错误'令牌{'
- 为什么我在Cloud9中的http请求总是返回错误
- 当jQuery返回错误时,如何在jQuery中重新发送ajax请求
- ontouchend-ios返回错误的坐标
- node.js mongojs findOne回调返回错误为null
- jQuery Ajax+经典ASP返回错误'意外的输入结束'
- 如果URL's链接返回错误
- 时刻.js时区值返回错误的时间戳
- 简单的jquery不起作用,并返回错误
- 在回调返回错误中带有点的 JSONP
- 在页面发布到服务器并返回错误后保留 javascript 更改
- web2py服务器返回错误,但已提交查询
- Javascript错误-左移位返回错误的输出