您的位置:首页 > 职场人生

前端面试:精选经典面试题(二十五)

2016-01-06 00:00 555 查看

需求

前端面试:精选经典面试题(二十四)
模拟文曲星上的猜字游戏,实现猜数算法,游戏开始后,系统会随机给出四个不重复的数字,由用户输入自己猜测的四个数字。
1. 如果数字猜对而且位置也对,就是1个A
2. 如果数字猜对但位置不对,就是1个B
3. 返回结果是如“2A1B”这样的字符
4. 猜错6次,游戏提示结束,重来

如:
随机数为2222,用户输入2223,结果为3A0B
随机数为5324,用户输入7352,结果为1A2B
假设:
获取系统随机数的方法叫getRendomNum():int
获取用户输入数字的方法叫做getUserNum():int
请实现猜数算法guess(int num):string?

代码实现

<script>
var count = 0;
var ttyOutput = [];
var arr1 = [0,1,2,3,4,5,6,7,8,9];
var score = {a:0,b:0};//用于记录分数

function getRandomNum(){
var num = 0;
for(var i=0;i<4;i++){
num = parseInt(Math.random()*10);
if(arr1[num]){
ttyOutput.push(arr1[num]);
arr1.splice(num,1);
}
}
}

function getUserNum(){
var userInput = prompt("请输入四个数字");
//验证合法性
checkInput(userInput);
}

function checkInput(userInput){
var index = -1;
for(var i=0;i<userInput.length;i++){
index = userInput[i].indexOf(ttyOutput);
if(index != -1){
if(userInput[i] == ttyOutput[i]){
score.a++;
}else{
score.b++;
}
}
}
if(score.a!=4){
alert("你的结果是"+"A"+score.a+"B"+score.b);
init();
}
}

function init(){
count++;
if(count>6){
if(confirm("游戏结束,再来!!")){
count = 0;
arr1 = [0,1,2,3,4,5,6,7,8,9];
init();
}
return false;
}
getRandomNum();
getUserNum();
}
</script>

这道题的变种

写一个函数来判断传入的两个数组是否相似。具体需求:

当以下全部满足,则返回true,否则返回false

数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。

数组的长度一致。

类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.

变种二

写一个函数判断两个对象结构相同。具体需求:

设参数分别为left, right, 当以下全部满足,则返回true,否则返回false

left, right必须是都是对象,否则返回false
left, right中得属性必须类型相同,否则返回false.
属性不存在时,算作类型相同。如left.a = 1, right.a不存在,则依然算通过。(实际数据返回有些属性可以不存在)
对于数组类型,只取第一个元素判断即可。若数组为空,不判断数组中的元素。
以上满足, 返回true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: