我试图从外部输入 slice()一些参数。
var string = "How are you doing today?";
var start = '0,7';
var result = string.slice(start);
alert(result);
我期待在警报中看到"如何"但我得到了完整的字符串。
答案 0 :(得分:2)
您需要将start
字符串拆分为两个整数:
var split = start.split(',');
var begin = parseInt(split[0], 10);
var end = parseInt(split[1], 10);
var result = string.slice(begin, end);
答案 1 :(得分:0)
您不能将两个逗号分隔的参数作为字符串提供。您可以做的是使用,
将字符串拆分为start.split(',')
,然后分别传递每个参数,例如
var foo = start.split(',');
string.slice(+foo[0], +foo[1]);
这里的一元+
只是代表转换为Number
。您也可以使用parseInt
函数
var foo = start.split(',');
string.slice(parseInt(foo[0], 10), parseInt(foo[1], 10));
10
中的parseInt
表示将值转换为基数10
答案 2 :(得分:0)
方法slice()
是一个参数或两个参数函数,其语法在此处定义:
arrayObj.slice(start, [end]);
在第一个结果中,您声明了两个参数,因此结果与您预期的一样。
var result1 = string.slice(0,7);
在第二个结果中,两个'参数'实际上存储在一个变量中,所以你真的要调用函数的单参数版本。
var result2 = string.slice(start);
我不太确定slice()
方法是否失败(可能确实如此),或者该函数处理非感知参数有些奇怪的方式(也可能是这种情况),但是结果是一样的:result2
只是原始字符串的值。
解决方案:
将变量分开以调用重载函数的双参数版本。
答案 3 :(得分:-1)
var start = 0;
var end = 7;
var result = string.slice(start, end);