JavaScript字符串处理验证求助:新手需完善代码完成指定任务
解决你的编程任务
先给你修正并简化后的代码,再一步步拆解逻辑:
新手友好版(数组操作)
var str = '011125228'; // 把字符串转成数组,方便删除指定位置的字符 var charArr = str.split(''); // 删除第一个字符(索引0) charArr.splice(0, 1); // 删完第一个后,原第六个字符的索引变成了4,删除它 charArr.splice(4, 1); // 删除最后一个字符 charArr.pop(); // 转回字符串 var processed = charArr.join(''); // 计算前三位数字的和(字符转数字才能做加法) var sumFirst = Number(processed[0]) + Number(processed[1]) + Number(processed[2]); // 计算后三位数字的和 var sumLast = Number(processed[3]) + Number(processed[4]) + Number(processed[5]); // 比较后输出结果 console.log(sumFirst === sumLast ? 'yes' : 'no');
精简版(字符串切片+求和函数)
var str = '011125228'; // 直接切片拼接得到处理后的字符串:跳过第一个、第六个、最后一个字符 var processed = str.slice(1, 5) + str.slice(6, -1); // 封装求和函数,避免重复代码 function calculateSum(strSegment) { return strSegment.split('').reduce((total, digit) => total + Number(digit), 0); } // 分别计算前三位和后三位的和 var sumFirst = calculateSum(processed.slice(0, 3)); var sumLast = calculateSum(processed.slice(3)); // 输出结果 console.log(sumFirst === sumLast ? 'yes' : 'no');
你的初始代码问题说明
str.replace(/^.|.$/g ,'')这步是对的,确实去掉了首尾字符,但接下来的s = y.replace(y[6])写法错误:replace需要两个参数,只传第一个的话,会把匹配到的内容替换成undefined,达不到删除效果。- 逻辑有误:你要删除的是原字符串的第六个字符,但删完首尾后,原第六个字符的位置已经偏移,直接操作
y[6]是错的。
关键逻辑拆解
- 删除指定字符:字符串是不可变的,用数组
splice或者字符串slice拼接的方式,能精准删除目标位置的字符。 - 数字求和:字符串里的字符是文本类型,必须转成数字(用
Number()或者*1)才能做加法运算。 - 结果判断:用三元运算符
条件 ? 结果1 : 结果2可以简洁替代if-else输出yes或no。
内容的提问来源于stack exchange,提问作者Mi St
相关产品推荐
相关产品推荐

