JavaScript数组数值计算:保险费用计算程序开发求助
保险费用计算程序实现方案
嘿,作为JavaScript新手能自己琢磨保险费用计算的程序,已经超棒啦!我来帮你一步步拆解需求,写出符合要求的代码~
首先咱们明确核心需求:
- 从给定的字符串参数里提取所有数值
- 找出超过最大值(你的示例里是400)的数值
- 每个超标的数值,算出超出部分乘以费率(0.3),最后累加得到总费用
- 必须用带index变量的for循环,不能直接用
i++(咱们用index += 1来替代就行)
一步步来实现
1. 先处理参数,把字符串转成数值数组
你的示例参数里,第二个是'100%200%300%400%500%600%700',咱们需要把它按%拆分,过滤掉空值,再转成数字:
// 先模拟你的输入参数 const delimiter = '%'; const numString = '100%200%300%400%500%600%700'; const maxLimit = 400; const feeRate = 0.3; // 拆分+过滤+转数字,得到数值数组 const numberArray = numString.split(delimiter) .filter(str => str !== '') // 去掉拆分后末尾可能出现的空字符串 .map(str => Number(str)); // 把每个字符串转成数字
2. 用指定的for循环计算总费用
这里要求不能直接用i++,那咱们就初始化一个index变量,循环里用index += 1来递增(完全符合“带index变量的for循环”要求):
let totalInsuranceFee = 0; // 初始化index,循环条件里用index +=1替代i++ for (let index = 0; index < numberArray.length; index += 1) { const currentNumber = numberArray[index]; // 判断当前数值是否超过最大值 if (currentNumber > maxLimit) { // 计算超出部分,乘以费率后累加到总费用 const excessAmount = currentNumber - maxLimit; totalInsuranceFee += excessAmount * feeRate; } } console.log('最终总保险费用:', totalInsuranceFee); // 算一下:(500-400)*0.3 + (600-400)*0.3 + (700-400)*0.3 = 30+60+90=180,所以输出180
3. 整合到函数里,方便调用
把上面的逻辑封装成一个函数,以后直接传参数就能用:
function calculateInsuranceFee(delimiter, numString, maxLimit, feeRate) { // 处理字符串得到数值数组,这里加了trim防止有空格干扰 const numberArray = numString.split(delimiter) .filter(str => str.trim() !== '') .map(str => Number(str)); let totalFee = 0; // 严格用带index的for循环,不用i++ for (let index = 0; index < numberArray.length; index += 1) { const currentNum = numberArray[index]; // 额外加个非数字校验,避免无效值出错 if (!isNaN(currentNum) && currentNum > maxLimit) { totalFee += (currentNum - maxLimit) * feeRate; } } return totalFee; } // 调用示例,就是你给的参数 const finalResult = calculateInsuranceFee('%','100%200%300%400%500%600%700',400,.3); console.log(finalResult); // 输出180
小补充
- 关于不能用
i++:其实index +=1和i++在这个场景效果一样,但如果是严格禁止++运算符,这个写法就完全合规啦。 - 加了
str.trim()和!isNaN(currentNum)是为了让程序更健壮,比如如果字符串里有空格或者不小心混了非数字内容,也不会出错。
内容的提问来源于stack exchange,提问作者phronzy
相关产品推荐
相关产品推荐

