JavaScript数组字符串挑战:修复数据提取代码错误求助
问题描述
我是编程新手,正在完成纯JavaScript挑战以进入训练营。目前我们正在学习数组相关内容,已掌握以下可用于完成挑战的知识点:
- 数组方法:
pop()、push()、split('')、join()(或join(' ')以移除逗号); - 如何在
console.log中输出数组内容并与字符串拼接; - 如何打印指定数组元素,示例代码:
var petShop = ['Puppies', 'Kitties', 'Hamsters', 'Snakes', 'Birds']; console.log('In the second cage we have: ' + petShop[1]); // prints 'In the second cage we have: Kitties'
Array.length属性;- 如何使用for循环打印数组每个元素,示例代码:
var powerRangers = ['Red', 'Black', 'Yellow', 'Pink', 'Blue']; for( var i = 0; i < powerRangers.length; i++){ console.log(i + ':' + powerRangers[i]); }
- if语句的使用。
挑战任务
要求将targetDisk数组中的未损坏数据(损坏数据标识为ø)复制到空数组newDisk,然后将newDisk的内容以字符串形式打印到终端,预期结果为:E-Corp's Evil。
我的代码
var targetDisk = [ 'E', 'ø', '-', 'C', 'ø', 'o', 'r', 'ø', 'ø', 'p', '\'', 'ø', 's', ' ', 'E', 'v', 'ø', 'i', 'ø', 'ø', 'l']; var newDisk = []; var corruptionSymbol = 'ø'; var phrase = targetDisk.join(' '); console.log('This is the phrase: ' + phrase); var newPhrase = phrase.split('ø'); console.log('This is the newPhrase: ' + newPhrase); for( var i = 0; i < newPhrase.length; i++){ newDisk.push(newPhrase[i]); //console.log(newDisk); } console.log('This is the newDisk: ' + newDisk.join(''));
输出结果
代码不正确。你的代码未达到fSociety标准,请继续改进
This is the phrase: E ø - C ø o r ø ø p ' ø s E v ø i ø ø l
This is the newPhrase: E , - C , o r , , p ' , s E v , i , , l
This is the newDisk: E - C o r p ' s E v i l
我认为错误原因是最终字符串中仍存在多余空格,请问我哪里出错了?该如何修改?
问题分析与修复
出错原因
你的思路绕了弯路:先把数组用join(' ')转成带空格的字符串,再用split('ø')拆分,这会让原本连续的正常元素之间被插入空格,后续即使去掉ø,这些多余空格也会保留,导致最终输出出现不必要的空格(比如E - C o r)。
修复方案
直接遍历原数组targetDisk,用if判断每个元素是否不是损坏标识ø,正常元素直接push到newDisk,最后用join('')转成字符串即可,完全不需要额外处理空格。
修正后的代码:
var targetDisk = [ 'E', 'ø', '-', 'C', 'ø', 'o', 'r', 'ø', 'ø', 'p', '\'', 'ø', 's', ' ', 'E', 'v', 'ø', 'i', 'ø', 'ø', 'l']; var newDisk = []; var corruptionSymbol = 'ø'; // 遍历原数组,筛选正常元素 for(var i = 0; i < targetDisk.length; i++) { if(targetDisk[i] !== corruptionSymbol) { newDisk.push(targetDisk[i]); } } // 转成字符串输出 console.log('This is the newDisk: ' + newDisk.join(''));
输出结果
运行后会得到正确结果:
This is the newDisk: E-Corp's Evil
内容的提问来源于stack exchange,提问作者JRPCRD
相关产品推荐
相关产品推荐

