/**
*
* 用object当做hash来记录猜过的数字
* 假设把所有猜过的数字存在一个array中, 其中有重复的数字
* [1, 2, 5, 6, 3, 5, 1, 6, 2, 6]
*
*/
var guesses = [1, 2, 5, 6, 3, 5, 1, 6, 2, 6];
var guessesHash = {};
var guessesCount = 0; // total guess count exclude duplicated guesses
for (var i = 0; i < guesses.length; i++) {
if (!guessesHash[guesses[i]]) {
guessesHash[guesses[i]] = true;
guessesCount++;
}
}
console.log(guessesCount); // should be 5
/**
*
* 当for loop中的i = 4时,guessesHash为:
* {
* ‘1’: true,
* '2': true,
* '3': true,
* '5': true,
* '6': true,
* }
* 当for loop中的i = 5时,因为guessesHash[guesses[i]]是true,
* 所以guessesCount++不会执行。
* 换句话说,for loop中一旦遇到重复的数字guessesCount++就不会执行
*
*
*
*/
用数组或者object把输入过的数存起来即可。
(function() {
var history={},
secret=4; // https://www.xkcd.com/221/
do {
var input=parseInt(prompt('输入数字: '));
history[input]=true;
if(input>secret)
alert('比这个小');
else if(input
alert('比这个大');
} while(input!==secret);
var count=0;
for(var _ in history)
count++;
alert('你猜了 '+count+' 次');
})();
定义个全局变量,记录用户每次输入的值,一样的值不做重复记录,不一样的记录。最后看看这个变量的数。。。。
第一种方法:建个数组,用户输入时检查数组最后一个数是否和输入相等,不相等就push进去。最后输出数组的长度就好了。
第二种方法:不管用户输入是否有连续重复的数字,都push到一个数组里,最后把连续的数字剔除掉之后的长度就好了。这样问题就变成了:实现一个函数,用户输入:[1,2,2,2,3,3,4,4,4,5,5],要求输出为5(即[1,2,3,4,5]的长度)。
var arr = [1,2,2,2,3,3,4,4,4,5,5];
function getLength(arr) {
return arr.filter(function(v,i,arr){
return v!==arr[i-1];
}).length;
}
console.log(getLength(arr)); // 5
var n=0;
var lastAnswer=null;
//var 答案数组=[];//题主的问题里没有要求记录用户输入的答案,如果有需求的话,就加上这个。
function 用户输入之后的处理函数(int 用户输入的值){
if(lastAnswer!=用户输入的值){
n++;
lastAnswer=用户输入的值;
//答案数组.push(用户输入的值);//题主的问题里没有要求记录用户输入的答案,如果有需求的话,就加上这个。
//和正确答案比较。
}
else{
//连续猜测同一个数字;
}
}
不知道间隔猜测同样的数字算不算你说的连续输入相同的数字 ?不过原理是一样的 :
声明一个数组 ,里面放之前猜测过的数字,每次输入新数字时到数组中查找是否已存在,已经存在的,则跳过。
参考数组去重,很简单实现
把每次数字存入数组,对比数字和数组最后一个数是否相等。
hash虽说不太懂大概意思就是再弄一个数组 专门放这个数字猜没猜过?
这不是很简单么,两个变量的事,一个答案,一个是上次的值
相关标签:
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
相关文章
相关视频
网友评论
文明上网理性发言,请遵守 新闻评论服务协议我要评论
立即提交
专题推荐独孤九贱-php全栈开发教程
全栈 100W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
玉女心经-web前端开发教程
入门 50W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
天龙八部-实战开发教程
实战 80W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习