我是Web开发(JS)的新手,我知道有很多主题与我的标题匹配,但没有回答类似的问题,或者可能是因为我是新手,所以找不到。
在下面的代码中,我希望我的函数和switch语句能够从数组(清单)中检索值,并计算新值,并将其分配到数组{{1}中的新不存在位置中}。作为最终结果,我希望函数根据情况返回带有值的tips
数组。
我知道解决此问题的另一种方法,无论如何我想知道这里出了什么问题,因为关于tips
的想法首先出现在我的脑海中,我认为它会起作用。
这是我的代码:
solving
答案 0 :(得分:0)
嗯,这不是一个好方法,但是如果您需要使用Switch,则可以尝试完全不使用bills数组的方式:
!#/bin/bash
...
search(){
echo "search log is $searchlog_bank"
read -p "Press Enter to continue..."
if [ saveconfirm_bank!=“NOT SAVING SEARCH LOG” ]; then
egrep -io “.*keyword_bank.*” $csvfile_bank | tee ./$searchlog_bank
read -p “<Search complete. Press Enter to continue>”
savelog_bank=“<NOT SAVING SEARCH LOG>”
clear
menu_display
else
egrep -io ".*$keyword_bank.*" $csvfile_bank
read -p "<Search complete. Press Enter to continue...>"
clear
menu_display
fi
}
#script init global variables
csvfile_bank="<NOT LOADED>"
searchlog_bank="<NOT SAVING A SEARCH LOG>"
fileext_bank="<NOT ENTERED>"
keyword_bank="<NOT ENTERED>"
regex_bank="<NOT ENTERED>"
#main script body
clear
menu_display
while [ $selection != “8” ]; do
case $selection in
1) readcsv;;
2) enter_searchlog;;
3) readext;;
4) readkeyword;;
5) readregex;;
6) clearparam;;
7) search;;
8) echo "See You Space Cowboy"
break;;
*) menuerror;;
esac
done
...
或者如果您需要比较bills数组,并取决于将值插入tips数组,我会这样:
super(props)
答案 1 :(得分:0)
让我们将这段代码分解一下,讨论一下它的作用
var tips = [];
var bills = [124, 48, 264];
这部分是在全局范围内声明两个变量,任何函数都可以访问它们以进行读写(重要的-Google JS闭包)。
function tipCalc(bills, tips){
switch(bills){
您现在已经启动了一个函数,该函数调用开关来评估账单的价值。因为您要传递bills[0]
,所以它将评估帐单[0](124)。它还接受第二个称为tips的参数,该参数是未定义的,因为调用该函数时不会传递第二个参数。
case bills < 50:
tips[0] = bills[1] * 0.2;
break;
这部分坏了。如果将其更改为if
语句,则其结果将为false。
case bills > 50:
tips[1] = bills[0] * 0.5;
break;
也坏了。如果更改为if
语句,它将评估为true并被执行,但是它将对未定义执行操作。如果没有第二个参数,也称为tips
,则应将全局tips
设置为62。
default:
console.log('no tips left.');
}
这是当前应执行的部分,因为它是唯一可以正确执行的部分,而其他两种情况的结构也不正确。
return tips;
}
将返回不确定的,因为提示(在函数本身的范围内)以不确定的开头并且未更改。
tips = tipCalc(bills[0]);
console.log(tips);
enter code here
破坏整个程序,应该在开头加上//
。
答案 2 :(得分:0)
这是执行我认为要执行的操作的详细方法。 (总计小费)
// create a blank tips array which we'll add to later
var tips = [];
// our bills array
var bills = [124, 48, 264];
// create a function that will calculate tips based on the bill totals
function calculateTips() {
// create a counter that we will use to determine when we've reached the end of the loop
var forEachCounter = 0;
// for each will loop through each item in the bills array
bills.forEach(function(amount) {
//this increases the counter by 1 on each loop
forEachCounter++;
switch(true) {
case (amount <= 50):
// .push appends to the array
tips.push(amount * 0.2);
break;
case (amount > 50):
// amount is the value of the bill for this iteration * 0.5
tips.push(amount * 0.5);
break;
}
// if end of array has been reached
// bills.length = the total amount of array items in bills arrat
if (forEachCounter === bills.length) {
// create a totalTips variable to add to
var totalTips = 0;
// create another counter to detect when end is reached
var forEachCounter2 = 0;
// loop through the tips array
tips.forEach(function(tipamount) {
// add 1 to counter on each loop
forEachCounter2++;
// add to totalTips
// can also do totalTips = totalTips + tipamount;
totalTips += tipamount;
// when end of tip array is reached..
if (forEachCounter2 === tips.length) {
//alert(totalTips);
// output it to where you need it
document.getElementsByTagName('body')[0].innerHTML = totalTips;
}
})
}
})
}
// call it when you need it
calculateTips();
注释
如果您正在使用许多技巧(例如整个国家饭店连锁店),则可能要考虑使用if / else而不是使用switch,因为switch is demonstrated to be slower with ranges
在此处进行修饰