我有一个简单的JavaScript代码,它生成一个介于0到10之间的所有数字的数组,然后从0到10再生。例如:
1 + 2 =
4 + 5 =
3 + 8 =
4 + 5 =
随机全部121个数字。 检查代码以便更好地理解。 希望这部分有用。
代码:
arr = [];
var lastArr = [];
while(lastArr.length<121){
arr.push('<br>'+Math.round(Math.random() * 10)+'+'+Math.round(Math.random() * 10)+'=');
lastArr=removeDuplicates(arr);
}
document.getElementById('plus').innerHTML=(lastArr.join(' '));
function removeDuplicates(arr){
let unique_array = []
for(let i = 0;i < arr.length; i++){
if(unique_array.indexOf(arr[i]) == -1){
unique_array.push(arr[i])
}
}
return unique_array
}
<html>
<p id='plus'></p>
</html>
问题:
我想用数字做同样的事情为100.下一步如果完成则是1000和下一步,但让我们回到问题。页面停止响应(可能是无限循环),没有显示任何内容。
以下是有问题的代码:
//DON'T RUN! PAGE CRASHES
arr = [];
var lastArr = [];
while(lastArr.length<(101*101)){
arr.push('<br>'+Math.round(Math.random() * 10)+'+'+Math.round(Math.random() * 10)+'=');
lastArr=removeDuplicates(arr);
}
document.getElementById('plus').innerHTML=(lastArr.join(' '));
function removeDuplicates(arr){
let unique_array = []
for(let i = 0;i < arr.length; i++){
if(unique_array.indexOf(arr[i]) == -1){
unique_array.push(arr[i])
}
}
return unique_array
}
//HTML
<p id='plus'></p>
第二个问题:
我想通过复制数学结果来清理数组:
e.x。
1 + 0 =
0 + 1 =
e.x.2
2 + 1 =
1 + 2 =
在数组中应该只留下第一个生成的(无论哪个)。
答案 0 :(得分:1)
问题在于您将while
循环更改为lastArr.length<(101*101)
,其运行次数超过10,000次。结果你的代码崩溃了。
要使用最多1000
的数字,您只需将两个(Math.random() * 10)
更改为(Math.random() * 100)
,如以下示例所示:
arr = [];
var lastArr = [];
while (lastArr.length < (121)) {
arr.push('<br>' + Math.round(Math.random() * 100) + '+' + Math.round(Math.random() * 100) + '=');
lastArr = removeDuplicates(arr);
}
document.getElementById('plus').innerHTML = (lastArr.join(' '));
function removeDuplicates(arr) {
let unique_array = []
for (let i = 0; i < arr.length; i++) {
if (unique_array.indexOf(arr[i]) == -1) {
unique_array.push(arr[i])
}
}
return unique_array
}
<p id='plus'></p>
希望这有帮助! :)