JavaScript代码小挑战

// 编码挑战 #1

让我们创建一个简单的投票应用程序!
一个投票包含一个问题、一个供用户选择的选项数组,以及一个包含每个选项回复数的数组。这些数据存储在下面的启动器对象中。

const poll = {
  question: 'What is your favourite programming language?',
  options: ['0: JavaScript', '1: Python', '2: Rust', '3: C++'],
  // This generates [0, 0, 0, 0]. More in the next section 😃
  answers: new Array(4).fill(0),
  };

以下是您的任务:
1.在 "poll "对象上创建一个名为 "registerNewAnswer "的方法。该方法有两个功能:
1.1.显示一个提示窗口,让用户输入所选选项的编号。提示窗口应如下所示:
您最喜欢的编程语言是什么?
0:JavaScript
1: Python
2: Rust
3: C++
(写出选项编号)
1.2.根据输入的数字更新答案数组。例如,如果选项是 3,则将数组中 3 号位置的值增加 1。请务必检查输入是否为数字,以及该数字是否合理(例如,答案 52 就不合理,对吗?)

2.每当用户点击 "回答投票 "按钮时,调用此方法。

3.创建一个显示投票结果的方法 “displayResults”。该方法将一个字符串作为输入(称为 “类型”),可以是 "字符串 "或 “数组”。如果类型为 “数组”,则只需使用 console.log() 按原样显示结果数组。这应该是默认选项。如果类型为 “字符串”,则显示类似 "Poll results are 13, 2, 4, 1 "的字符串。

4.在每次 "registerNewAnswer "方法调用结束时运行 "displayResults "方法。

提示:使用在本节和上一节中学到的许多工具 😉
附加:使用 "displayResults "方法显示测试数据中的两个数组。同时使用 "数组 "和 "字符串 "选项。不要将数组放在投票对象中!那么在这种情况下,this 关键字应该是什么样的呢?
奖励测试数据 1:[5, 2, 3]
奖励测试数据 2:[1, 5, 3, 9, 6, 1]
祝你好运
*/

参考答案

1.1

const poll = {
  question: '你最喜欢的编程语言是什么?',
  options: ['0: JavaScript', '1: Python', '2: Rust', '3: C++'],
  // This generates [0, 0, 0, 0]. More in the next section 😃
  answers: new Array(4).fill(0),
  registerNewAnswer() {
    const answer = Number(
      prompt(`${this.question}\n${this.options.join('\n')}\n(写出选项编号)`)
    );
  },
};
poll.registerNewAnswer();

1.2

const poll = {
  question: '你最喜欢的编程语言是什么?',
  options: ['0: JavaScript', '1: Python', '2: Rust', '3: C++'],
  // This generates [0, 0, 0, 0]. More in the next section 😃
  answers: new Array(4).fill(0),
  registerNewAnswer() {
    const answer = Number(
      prompt(`${this.question}\n${this.options.join('\n')}\n(写出选项编号)`)
    );

    //1.2
    typeof answer === 'number' &&
      answer < this.answers.length &&
      this.answers[answer]++;

    console.log(this.answers);
  },
};

poll.registerNewAnswer();

在这里插入图片描述

2

const poll = {
  question: '你最喜欢的编程语言是什么?',
  options: ['0: JavaScript', '1: Python', '2: Rust', '3: C++'],
  // This generates [0, 0, 0, 0]. More in the next section 😃
  answers: new Array(4).fill(0),
  registerNewAnswer() {
    const answer = Number(
      prompt(`${this.question}\n${this.options.join('\n')}\n(写出选项编号)`)
    );

    //1.2
    typeof answer === 'number' &&
      answer < this.answers.length &&
      this.answers[answer]++;

    console.log(this.answers);
  },
};

//2
document
  .querySelector('.poll')
  .addEventListener('click', poll.registerNewAnswer.bind(poll));

3

const poll = {
  question: '你最喜欢的编程语言是什么?',
  options: ['0: JavaScript', '1: Python', '2: Rust', '3: C++'],
  // This generates [0, 0, 0, 0]. More in the next section 😃
  answers: new Array(4).fill(0),
  registerNewAnswer() {
    const answer = Number(
      prompt(`${this.question}\n${this.options.join('\n')}\n(写出选项编号)`)
    );

    //1.2
    typeof answer === 'number' &&
      answer < this.answers.length &&
      this.answers[answer]++;

    this.displayResults();
    this.displayResults('string');
  },

  //3
  displayResults(type = 'array') {
    if (type === 'array') {
      console.log(this.answers);
    } else if (type === 'string') {
      console.log(`投票结果是${this.answers.join(', ')}`);
    }
  },
};

//2
document
  .querySelector('.poll')
  .addEventListener('click', poll.registerNewAnswer.bind(poll));

在这里插入图片描述

附加

//附加
//测试数据 1:[5, 2, 3]
//测试数据 2:[1, 5, 3, 9, 6, 1]
poll.displayResults.call({ answers: [5, 2, 3] }, 'string');
poll.displayResults.call({ answers: [1, 5, 3, 9, 6, 1] }, 'string');
poll.displayResults.call({ answers: [1, 5, 3, 9, 6, 1] });
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值