You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:18:31