JavaScript:无法从函数中正确返回数组

时间:2014-05-14 16:33:07

标签: javascript arrays

我遇到了 javascript 的小问题,可以通过以下示例说明:

function inlineSplit ( string, delimeter )
{
    delimiter = typeof delimeter !== 'undefined' ? delimeter : ",";
    return new Array( string.split(delimiter) );
}

我认为,执行以下操作后,test变量将是一个数组:

var test = inlineSplit( "a,b,c" );

令我惊讶的是,函数返回一个字符串。在以下测试中:

alert( test[0] ); // results in "a,b,c"
alert( test[1] ); // results in ""

可能有什么问题?自从我用javascript编写代码以来已经很长时间了,现在我开始觉得有点愚蠢,不明白错误是什么...... :(

2 个答案:

答案 0 :(得分:3)

.split()函数返回一个数组;没有必要建立一个。您的代码构建了一个新数组,该数组将包含一个条目,即.split()返回的数组。

构建数组的一种更简单的方法是使用数组文字:

return [1, 2, 3];

无论你传入alert()函数的是什么,都会被强制转换为字符串,因此它不是分析行为的最佳方法。

答案 1 :(得分:1)

你将一个数组放在另一个数组中,因为alert( test[0] );会通过拆分你的字符串来返回你创建的第一个数组。

使用

 return string.split(delimiter);

而不是

return new Array( string.split(delimiter) );