我正在使用应用程序脚本/ ES5。我有:
function returnText(message) {
switch(message.indexOf(mykey)!== -1) {
case true:
var mykey = 'ziptest'
break;
case true:
var mykey = 'setnum'
break;
default:
console.log('default');
}
}
function returnText1() {
returnText('ziptest 19886991201')
}
returnText1();
它默认为默认选项。如何解决此问题,以便它在以下位置选择选项:
var mykey = 'ziptest'
答案 0 :(得分:1)
您误解了switch
语句的工作方式。 JavaScript函数中的代码从头到尾是逐步的。达到该代码点时,将一次评估switch ()
中的条件。
如果您想在message
中检查两个不同的字符串,尽管您可以使用switch
,但这将是不合适且令人困惑的。而是使用if
/ else if
/ else
:
function returnText(message) {
if (message.indexOf("ziptest")!== -1) {
return "ziptest";
} else if (message.indexOf("setnum") !== -1) {
return "setnum";
} else {
return "default";
}
}
(由于每个分支return
的存在,实际上您实际上不需要else
,但是...)
在评论中您说过:
现在我只有3个选项,但以后可能还要再添加5-6个
在这种情况下,请使用循环:
const strings = ["ziptest", "setnum", /*...*/];
function returnText(message) {
return strings.find(str => message.indexOf(str) !== -1) || "default";
}
find
返回第一个条目,该条目的回调返回真值(并停止循环),或者undefined
,如果它用完了条目而没有回调返回真值。因此,使用上述方法,我们检查每个str
返回的true
字符串是否存在于message
中。如果find
返回undefined
,则|| "default"
将插入并提供默认字符串。
旁注:我看到您已经对此google-apps-script进行了标记,因此您可能会陷入.indexOf(str) !== -1
的困境。但是我听说他们正在对其进行更新,所以您可能现在有.includes(str)
。
答案 1 :(得分:1)
如果您真的想使用switch
,则可以执行以下操作。
function returnText(message) {
switch (true) {
case message.indexOf('ziptest') > -1:
console.log('ziptest');
break;
case message.indexOf('setnum') > -1:
console.log('setnum');
break;
default:
console.log('default');
}
}
function returnText1() {
returnText('ziptest 19886991201')
}
returnText1();
答案 2 :(得分:1)
如果键很多,则应该使用数组。
Controller :::
public function addmember()
{
if (empty($_FILES['user_image']['name']))
{
$this->form_validation->set_rules('user_image', 'User Image', 'required');
}
if (empty($_FILES['user_gallery']['name']))
{
$this->form_validation->set_rules('user_gallery[]', 'User Gallery', 'required');
}
if($this->form_validation->run() == FALSE)
{
$this->load->view('common_page/header');
$this->load->view('common_page/sidebar');
$this->load->view('form');
$this->load->view('common_page/footer');
}
else
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$this->load->library('upload', $config);
if($this->upload->do_upload('user_image') && !empty($_FILES['user_gallery']['name']))
{
$uploadData = $this->upload->data();
$uploadedFile = $uploadData['file_name'];
$dataInfo = [];
$files = $_FILES;
$cpt = count($_FILES['user_gallery']['name']);
for($i=0; $i<$cpt; $i++)
{
$_FILES['user_gallery']['name'] = $files['user_gallery']['name'][$i];
$_FILES['user_gallery']['type'] = $files['user_gallery']['type'][$i];
$_FILES['user_gallery']['tmp_name'] = $files['user_gallery']['tmp_name'][$i];
$_FILES['user_gallery']['error'] = $files['user_gallery']['error'][$i];
$_FILES['user_gallery']['size'] = $files['user_gallery']['size'][$i];
$this->upload->initialize($config);
$this->upload->do_upload('user_gallery');
$dataInfo[] = $this->upload->data();
}
$all_imgs = '';
if ( count($dataInfo) > 0) {
foreach ($dataInfo as $info) {
$all_imgs .= $info['file_name'];
$all_imgs .= ',';
}
}
$data = [
'user_image' => $uploadedFile,
'user_gallery' => $all_imgs
];
$this->Admin_model->insertData($data,'member');
$this->session->set_flashdata('success', 'Member Register Successfully !!!');
redirect('all/form');
}
else
{
}
}
}
VIEW :::
<form role="form" id="member_form" action="<?php echo
base_url('all/addmember');?>" method="post" enctype="multipart/form-data">
<div class="box-body">
<div class="form-group">
<label for="exampleInputFile">User Image</label>
<input type="file" id="file" name="user_image">
<?php echo form_error('user_image', '<div class="error">', '</div>'); ?>
</div>
<div class="form-group">
<label for="exampleInputFile">User Gallery Image</label>
<input type="file" id="gallery" name="user_gallery[]" multiple="">
<?php echo form_error('user_gallery', '<div class="error">', '</div>'); ?>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>