在slice中使用变量作为参数

时间:2014-11-29 15:41:14

标签: javascript

我试图从外部输入 slice()一些参数。

var string = "How are you doing today?";


var start = '0,7';
var result = string.slice(start);


alert(result);

我期待在警报中看到"如何"但我得到了完整的字符串。

JSFIDDLE DEMO

4 个答案:

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