JavaScript中Array.reverse()函数无法正常工作问题求助
问题原因拆解
嘿,核心问题其实很简单——你把原本的数组变量直接覆盖成字符串了!
咱们一步步捋你的代码:
- 第一行
var NumberOfString = new Array(5);确实创建了一个长度为5的空数组,这步没问题。 - 但第二行
NumberOfString = prompt("정수 5개를 입력하세요: ");直接把这个变量重新赋值成了prompt返回的字符串(哪怕用户输入的是用逗号分隔的5个数,它本质还是字符串类型)。 - 而
reverse()是数组专属的方法,字符串并没有这个方法,所以调用NumberOfString.reverse()自然会失效,甚至在浏览器控制台里能看到明确的报错信息。
修复后的代码示例
要让reverse()正常工作,得先把用户输入的字符串转换成数组,再进行操作:
// 获取用户输入,并用逗号分割成数组 var inputStr = prompt("정수 5개를 입력하세요(쉼표로 구분해주세요): "); var NumberOfString = inputStr.split(','); // 可选:把数组里的字符串转成数字类型(如果需要做数值运算的话) NumberOfString = NumberOfString.map(item => parseInt(item, 10)); // 输出原数组 document.write("입력된 수의 배열" + "<br/>" + NumberOfString + "<hr>"); // 反转数组并输出 document.write("역순으로 재정렬된 배열" + "<br>"); document.write(NumberOfString.reverse());
额外小提示
- 如果不想修改原数组(
reverse()会直接改变原数组本身),可以先复制一份再反转,比如用扩展运算符:[...NumberOfString].reverse() - 记得提醒用户用逗号分隔输入,不然
split(',')没法正确拆分出单个数字元素哦~
内容的提问来源于stack exchange,提问作者Tourscholar
相关产品推荐
相关产品推荐

