JS自定义zero函数处理'4.0'无法返回预期值40问题求助
问题原因
- 入参类型不匹配:你函数的逻辑是按照数组操作编写的,但实际传入的
firstDefrost是字符串类型。JavaScript中字符串属于不可变原始值,无法通过[索引] = 新值的方式修改指定位置的字符,你写的修改操作本身不会生效。 - 原始逻辑缺少数组转字符串的步骤:就算你传入的是数组,最终返回的也是数组格式,直接赋值给
firstDefrost也不会得到你要的字符串结果。
修复后的代码
var firstDefrost = "4.0"; function zero(str) { // 先将字符串转为数组,支持位置修改 const zeroArray = str.split(''); if (zeroArray[1] == undefined) { zeroArray[1] = 0; zeroArray[2] = ""; console.log("zero array 1 called") } else if (zeroArray[1] == ".") { zeroArray[1] = 0; zeroArray[2] = ""; console.log("zero array 2 called" + zeroArray) } // 将处理完的数组拼接为字符串返回 return zeroArray.join(''); } firstDefrost = zero(firstDefrost);
运行后firstDefrost的值就是你预期的40。
内容的提问来源于stack exchange,提问作者Ben reaby
相关产品推荐
相关产品推荐

