Javascript 使用变量作为切片中的参数
我试图从外部输入一些参数Javascript 使用变量作为切片中的参数,javascript,Javascript,我试图从外部输入一些参数 var string = "How are you doing today?"; var start = '0,7'; var result = string.slice(start); alert(result); 我希望看到在警报“你好”,但我得到了完整的字符串 不能将两个逗号分隔的参数作为字符串提供。您可以使用start.split(',')拆分,上的字符串,然后分别传递每个参数,例如 var foo = start.split(','); string
var string = "How are you doing today?";
var start = '0,7';
var result = string.slice(start);
alert(result);
我希望看到在警报“你好”,但我得到了完整的字符串
不能将两个逗号分隔的参数作为字符串提供。您可以使用
start.split(',')
拆分,
上的字符串,然后分别传递每个参数,例如
var foo = start.split(',');
string.slice(+foo[0], +foo[1]);
这里的一元数+
表示转换成数字。您还可以使用parseInt
函数
var foo = start.split(',');
string.slice(parseInt(foo[0], 10), parseInt(foo[1], 10));
parseInt
中的10
表示将值转换为基数10您需要将start
字符串拆分为两个整数:
var split = start.split(',');
var begin = parseInt(split[0], 10);
var end = parseInt(split[1], 10);
var result = string.slice(begin, end);
方法slice()
是一个单参数或双参数函数,其语法定义如下:
arrayObj.slice(start, [end]);
在第一个结果中,您声明了两个参数,因此结果与预期一致
var result1 = string.slice(0,7);
在第二个结果中,两个“参数”实际上存储在一个变量中,因此您实际上是在调用函数的单参数版本
var result2 = string.slice(start);
我不太确定slice()
方法是否失败(可能会失败),或者函数处理非感测参数的方式很奇怪(也可能是这样),但结果是一样的:result2
只是原始字符串的值
解决方案:
分离变量以调用重载函数的双参数版本。您不能这样做——slice正在尝试将字符串转换为单个int。您必须将字符串解析为两个值,并将这些作为参数传递给slice
@one2gov:您阅读了slice的文档了吗?您的方法正在工作。但实际上这两个数字总是不同的,我将从..range()函数中得到它们。所以它总是以逗号分隔的字符串形式出现?。.range(0,7)
产生[0,1,2,3,4,5,6]
。我不知道'0,7'
是从哪里来的<代码>..range('0,7')
生成一个错误“数组长度无效”。类似于这样,获取两个数字var seven=7代码>var start=u0.range(0,7,7-1)代码>在那里的代码中,start
将是[0,6]
而不是'0,7'
。seven
是否已传递到您的函数中?感谢您对此过程的解释。没问题!我希望这对你有帮助!我很抱歉。你认为我应该如何选择一个答案?如果有三个有用的答案。1个理论解释和2个不同的工作代码。我会选择对您最有帮助并且您认为对社区最有益的答案。退房。谢谢你的回答和链接。我认为我的选择对社区更有利。我还不知道我最后会用什么答案。
var result2 = string.slice(start);