在十瓶保龄球比赛中为单个玩家保持准确比分的 javascript 对象

标签 javascript

最近我得到了一个网络开发人员职位的面试。

他们要求我创建一个 javascript 对象来保持准确的分数 单人十瓶保龄球比赛。

我已经完成了我的测试。

您可以在此 url http://jsbin.com/arele5 运行脚本,

如果您想编辑,请转到此链接 http://jsbin.com/arele5/edit

我有两个问题:

1) javascript 对象适用于谷歌浏览器,但 jsbin 提示以下构造

var bowlingGame = new function(){...};

如果我按以下方式更正构造

var bowlingGame = function(){...};

jsbin 告诉我一切正常,但它在 google chrome 中不起作用。有什么想法吗?

2) 我没有通过面试,确实没有收到任何回复;所以我的第二个问题是:

解决该练习的最佳方法是什么?

谢谢,

安东尼奥

最佳答案

对于#1,尝试:

var bowlingGame = new (function(){ ...})();

至于#2,我不能确切地说出你为什么没有找到工作,但如果不出意外的话,你的代码间距看起来不是很漂亮。我刚刚写了这篇文章,它更加紧凑且易于阅读:

function game(){
    this.balls = [];
}

game.prototype = {
    addBalls : function(n){
        this.balls.push.apply(this.balls, arguments);
    },

    getScoreArray : function(){
        var score=0, ball=0, frame=1, frames=[], cur;
        for(var i=0, l=this.balls.length; i<l; i++){
            score += (cur = this.balls[i])
                + ((!ball && frame<10 && cur==10 && this.balls[i+2]) || 0)
                + (frame<10 && (((ball ? this.balls[i-1] : 0) + cur) == 10) ? this.balls[i+1] || 0 : 0);
            ball = ball || (cur==10) ? 0 : 1;
            ball || (frame<10 ? frames.push(score) && frame++ : frames[9] = score);
        }

        return frames;
    }
};

如果不出意外,请通过以下方式运行您的代码:http://jsbeautifier.org/如果你不能保持缩进干净......

关于在十瓶保龄球比赛中为单个玩家保持准确比分的 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998575/

相关文章:

javascript - 如何在 React 中正确处理 cookie

JavaScript开发和生产模式

javascript - Sequelize 数据库 :migrate doesn't update model

javascript - 更改为 live 或 on 时,点击功能不起作用

javascript - 在 React Native 中使用地理围栏

javascript图像覆盖在指定的div上

javascript - 使用 jQuery AJAX 和 PHP 创建智能远程上传脚本

javascript - 速度与时间的浮点图

javascript - extjs:将变量传递给 FormPanel

javascript - 如果语句在不应该触发的时候触发