如何在switch语句中放置条件

时间:2020-06-27 19:21:16

标签: javascript

我正在尝试写出一个switch语句,并将条件存储在array中。条件是是否为score is between two numbers ('test')。如果它在这两个数字之间,则会发出'response'

我的期望是,使用'score'变量并从array获取参数将使用我的'response'变量来输出有关score的消息,如果条件被满足。我可以获得paragraph1的输出,但是,我的'response'paragraph two的{​​{1}}的输出却无法获得。

switch statement

3 个答案:

答案 0 :(得分:3)

要编写带范围的开关盒,您需要编写如下内容(如下所示显示案例1和3):

from flask import Flask, jsonify, request, render_template_string
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

@app.route('/')
@app.route('/api/talk', methods=['POST'])
def index():
    if request.method == 'POST':
        print('form:', request.form)
        print('data:', request.data)
        print('json:', request.json)
        user_input = request.json['user_input']
        return jsonify({'msg': 'My Answer'})
    else:
        return render_template_string('''<html>
<head>
    <link rel="stylesheet" href="">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <script src=""></script>
    <script src=""></script>
</head>
<body>
<div class="container">
    <h1>Let's Talk</h1>

    <div id="userinput" class="alert alert-success" role="alert"></div>
    <div id="botresponse" class="alert alert-danger" role="alert"></div>
    <input type="text" id="user_input" class="input-small"><br><br>
    <button onclick="sendToServer()" class="btn btn-success" id="button">Send</button>
    <span></span>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
    function sendToServer(){
        console.log("clicked");
        $.ajax({
            data: JSON.stringify({ user_input: $("#user_input").val() }),
            type: "POST",
            url: "http://127.0.0.1:8000/api/talk",
            contentType: "application/json",
            headers: {"Access-Control-Allow-Origin": "*"},
        }).done(function(data){
            console.log(data);
            let user = $("#user_input").val();
            document.getElementById("userinput").innerText=user;
            document.getElementById("botresponse").innerText=data.msg;
        });
    }
</script>
</body>
</html>''')

if __name__ == '__main__':
  app.run(host='127.0.0.1', port=8000, debug=True, use_reloader=False)

答案 1 :(得分:1)

注意:我写了这个答案,然后在评论中看到使用switch语句是JS挑战的必要条件。但我还是把它留在这里

switch确实不适合您要尝试执行的操作。这是我的处理方式:

const section = document.querySelector('body');

const score = 85;
const conditions = [
 { test: s => isNaN(s),           response: 'not a number' },
 { test: s => (s < 0 || s > 100), response: 'broken'       },
 { test: s => s < 19,             response: '0-18'         },
 { test: s => s < 39,             response: '19-38'        },
 { test: s => s < 69,             response: '39-68'        },
 { test: s => s < 89,             response: '69-88'        },
 { test: s => true,               response: '89-100'       }
];

const response = conditions.find(cond => cond.test(score)).response;

// Don't edit the code below here!

section.innerHTML = ' ';
let para1 = document.createElement('p');
let para2 = document.createElement('p');

para1.textContent = `Your score is ${ score }`;
para2.textContent = response;

section.appendChild(para1);
section.appendChild(para2);

答案 2 :(得分:0)

将这些条件转换为数组毫无意义。您使事情变得过于复杂。只需这样做:

if(score < 0 || score > 100) {
  return 'broken';
} else if (score != Number || score == 0) {
  return 'not a number'
} else if (score > 19 || score < 39){
  return '20-38'
}

等...

相关问题