我正在尝试访问数组的特定条目。我传入一个字符串,我试图根据空格解析它。有更简单的方法吗?
var toAdd = "Hello Everyone this is cool isnt it?";
var final = "";
var toAdd2 = [ ];
var sub = "";
var lastIndex = 0;
for( var i = 0; i < toAdd.length; i++ )
{
if( toAdd[ i ] == " ")
{
sub = toAdd.substring( lastIndex , i ).trim();
toAdd2[ i ] = sub;
lastIndex = i;
}
if( i == toAdd.length - 1 )
{
sub = toAdd.substring( lastIndex, toAdd.length).trim();
toAdd2[ i ] = sub;
}
}
console.log( toAdd2[ 0 ] );
这一直给我一个错误说, TypeError:无法读取未定义的属性“0”。
答案 0 :(得分:5)
试试这个:
var str = "Hello Everyone this is cool isnt it?";
var toAdd = str.split(" ");
答案 1 :(得分:1)
您的算法存在缺陷。请参阅console.log(toAdd2)
的输出:
[undefined,undefined,undefined,undefined,undefined,“Hello”, undefined,undefined,undefined,undefined,undefined,undefined, undefined,undefined,“Everyone”,undefined,undefined,undefined, undefined,“this”,undefined,undefined,“is”,undefined,undefined, undefined,undefined,“cool”,undefined,undefined,undefined, undefined,“isnt”,undefined,undefined,“it?”]
将其更改为:
if( toAdd[ i ] == " ")
{
sub = toAdd.substring( lastIndex , i ).trim();
toAdd2.push(sub);
lastIndex = i;
}
if( i == toAdd.length - 1 )
{
sub = toAdd.substring( lastIndex, toAdd.length).trim();
toAdd2.push(sub);
}
现在它得到了正确的输出:
["Hello", "Everyone", "this", "is", "cool", "isnt", "it?"]
在迭代toAdd
中的每个字符之前,只更改与条件匹配的索引。因此toAdd2
中的大多数元素都将被取消分配,因此未定义。您希望使用array.push
向数组添加元素。