访问数组的特定元素

时间:2013-12-15 06:00:11

标签: javascript

我正在尝试访问数组的特定条目。我传入一个字符串,我试图根据空格解析它。有更简单的方法吗?

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”。

2 个答案:

答案 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向数组添加元素。