第一篇文章,请对我轻松一点。

我有一个看起来像这个[BTC-LTC, BTC-DOGE, BTC-VTC]的数组,我试图将所有的“-”更改为“ _”。但是在使用.replace()方法时遇到了麻烦。这是我的代码。

var array = [BTC-LTC, BTC-DOGE, BTC-VTC];
var fixedArray = [];

for(var i=0; i <= array.length; i++){
   var str = JSON.stringify(array[i]);
   var res = str.replace("-","_");
   fixedArray.push(res);
};


我尝试不使用JSON.stringify,但这也不起作用。我也尝试过先创建var str = String();,这也没有用。 .replace()方法是否可能在Google脚本中不可用?

最佳答案

在您的示例中,var array = [BTC-LTC, BTC-DOGE, BTC-VTC];

应该

var array = ["BTC-LTC", "BTC-DOGE", "BTC-VTC"];

但是,我从评论中发现,这只是您最初示例中的错字。

var str = JSON.stringify(array[i]);是多余的。您只需要执行var str = array[i];即可,因为数组中的值已经是一个字符串,所以无需将其再次变为一个值-“ stringify”方法期望为对象或数组提供可操作的对象。

但是,主要问题是您的for循环进行了太多的迭代。数组是从零开始的,因此当索引比数组的长度小1(而不是等于数组的长度)时,您需要停止循环。例如如果array.length为10,则有10个索引,但它们从0开始,因此索引为0、1、2、3、4、5、6、7、8、9。如果您的循环继续等于array.length,那么在最后一个循环中,array[10]将超出范围,只有最后一次迭代才给您undefined错误。

var array = ["BTC-LTC", "BTC-DOGE", "BTC-VTC"];
var fixedArray = [];

for (var i = 0; i < array.length; i++) {
   var str = array[i];
   var res = str.replace("-","_");
   fixedArray.push(res);
}

09-25 18:42