Javascript 谷歌脚本。TypeError:无法调用方法";替换“;未定义的

Javascript 谷歌脚本。TypeError:无法调用方法";替换“;未定义的,javascript,Javascript,第一个帖子请对我放轻松 我有一个数组,看起来像这样[BTC-LTC,BTC-DOGE,BTC-VTC]我正试图用“\ux”来更改所有的“-”。但是我在使用.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]);

第一个帖子请对我放轻松

我有一个数组,看起来像这样
[BTC-LTC,BTC-DOGE,BTC-VTC]
我正试图用“\ux”来更改所有的“-”。但是我在使用
.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);
};
var数组=[BTC-LTC、BTC-DOGE、BTC-VTC];
var Fixedaray=[];

对于(var i=0;i,如果我理解正确,您试图编辑的是字符串,而不是变量,因此您需要在数组中加引号,在
替换中加一个
g
,以防有多个东西要替换:

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

for(var i=0; i <= array.length; i++){
   fixedArray.push(array[i].replace(/-/g, '_'));
};
var数组=['BTC-LTC'、'BTC-DOGE'、'BTC-VTC'];
var Fixedaray=[];

对于(var i=0;i,如果我理解正确,您试图编辑的是字符串,而不是变量,因此您需要在数组中加引号,在
替换中加一个
g
,以防有多个东西要替换:

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

for(var i=0; i <= array.length; i++){
   fixedArray.push(array[i].replace(/-/g, '_'));
};
var数组=['BTC-LTC'、'BTC-DOGE'、'BTC-VTC'];
var Fixedaray=[];

对于(VARI=0;i在您的示例中
var数组=[BTC-LTC、BTC-DOGE、BTC-VTC];

应该是

var数组=[“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。如果您的循环失败es on等于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);
}
var数组=[“BTC-LTC”、“BTC-DOGE”、“BTC-VTC”];
var Fixedaray=[];
对于(var i=0;i
在您的示例中
var数组=[BTC-LTC、BTC-DOGE、BTC-VTC];

应该是

var数组=[“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。如果您的循环失败es on等于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);
}
var数组=[“BTC-LTC”、“BTC-DOGE”、“BTC-VTC”];
var Fixedaray=[];
对于(var i=0;i
如果我们按以下方式进行更改,代码工作正常:

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

如果我们按以下方式进行更改,代码工作正常:

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

好的,所以我尝试将变量数组更改为字符串数组。这样我就可以按计划使用for循环。但是现在如果我尝试
array.map(String);
数组不会将变量转换为字符串。在
array.map(String)中
字符串没有变蓝。array.map是从哪里来的?你从来没有提到过这一点。你想做什么,在这个过程中的什么时候?我正在从网站api中提取数组。当我查看api的返回时,所有元素都已经是字符串格式。我不确定为什么我的数组有变量而不是字符串在这里。如果不看到您从API数据到您在这里给出的
for
循环的路径,我真的无法给您一个答案。很明显,您问题中的示例并不完全是真实世界的场景,可能还有其他地方出了问题。`var urlBit=“”;`var responseapptibrex=UrlFetchApp.fetch(urlBit);`var-bittrexData=JSON.parse(responseAppibitTrex.result)`var-bittrexData=bittrexData.map(函数(a){return a.MarketName;});`
var-strArr=bittrexPairs.map(函数(e){return e.toString())
请记住这是在google scriptsOkay中,因此我尝试将变量数组更改为字符串数组。这样我就可以按计划使用for循环。但是现在如果我尝试
array.map(String);
数组不会将变量转换为字符串。在
array.map(String)中
字符串没有变蓝。array.map是从哪里来的?你从来没有提到过这一点。你想做什么,在这个过程中的什么时候?我正在从网站api中提取数组。当我查看api的返回时,所有元素都已经是字符串格式。我不确定为什么我的数组有变量而不是字符串在这里。如果不看到您从API数据到您在这里给出的
for
循环的路径,我真的无法给您一个答案。很明显,您问题中的示例并不完全是真实世界的场景,可能还有其他地方出了问题。`var urlBit=“”;`var responseapptibrex=UrlFetchApp.fetch(urlBit);`var bittrexData=JSON.parse(responseAppi)