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);