从数组的javascript数组中获取未定义

从数组的javascript数组中获取未定义,javascript,arrays,json,Javascript,Arrays,Json,这与我的前一个问题有关,但它略有不同,是一个全新的问题。。。我有一个数组,经过一些漂亮的PHP之后,它看起来像这样: var series = { "001":{ "game":"Portal 2", "name":"Portal 2" }, "002":{ "game":"Minecraft", "name":"241" }, "003":{ "game":"Minecraf

这与我的前一个问题有关,但它略有不同,是一个全新的问题。。。我有一个数组,经过一些漂亮的PHP之后,它看起来像这样:

var series = {
    "001":{
        "game":"Portal 2",
        "name":"Portal 2"
    },
    "002":{
        "game":"Minecraft",
        "name":"241"
    },
    "003":{
        "game":"Minecraft",
        "name":"HackMine"
    },
    "004":{
        "game":"Mass Effect 3",
        "name":"Mass Effect 3"
    },
    "005":{
        "game":"League of Legends",
        "name":"League of Legends"
    },
    "006":{
        "game":"Half Life 2",
        "name":"The Hidden: Source"
    },
    "007":{
        "game":"Skyrim",
        "name":"Modded Skyrim"
    }
}
这个位子很好。。。现在我的问题是,当调用这个函数时,它总是给出
game
name
undefined

function seriesIdOnBlur()
{       

    var id = parseInt(document.getElementById("series_id").value);

    if (series[id] == null)
    {
        var message = "The Series ID you input was invalid";
    }
    else
    {
        var seriesId = series[id];

        var game = seriesId['game'];
        var name = seriesId['name'];
        var message = "You've inputted the id for the game: " + game + " for the series: " + name;
    }

    document.getElementById("series_id_check").innerHTML = message;
}

你正在用那些领先的
0
s:
系列['001']
系列['1']
不同。切断
parseInt
调用(强制用户键入'001'),删除前导0:

var series = {
    "1":{
        "game":"Portal 2",
        "name":"Portal 2"
    },
    ...
    "7":{
        "game":"Skyrim",
        "name":"Modded Skyrim"
    }
}
或者使用数组:

var series = [
    {
        "game":"Portal 2",
        "name":"Portal 2"
    },
    ...
    {
        "game":"Skyrim",
        "name":"Modded Skyrim"
    }
]
这:

是一个对象文字,因此您有对象的对象,而不是您所说的数组的数组

要使代码正常工作,您需要对象数组:

series = [
    {
        "game":"Portal 2",
        "name":"Portal 2"
    },
    {
        "game":"Minecraft",
        "name":"241"
    } ... ];

这些不是数组。这是一个对象。请注意数组是基于0的,因此如果切换到数组示例,您的第一个元素将位于索引0而不是“001”。如果您希望它位于索引1,您可以指定您的索引并创建所谓的“稀疏”数组:
series[1]={“game”:“Portal”、“name”:“Portal”}
quick plunker用于不带
parseInt
的变体:我有意使用00,因为最终我将拥有10个以上的系列,我希望数据库看起来整洁,我不希望超过999,所以零也没问题。。。所以你说删除parseIntPlunker真的很有用,但是,在plunker上它可以工作,而在网站上它不知道?网站是upload.red-jax.com谢谢我发现了我的问题这个解决方案确实有效,它是我得到PHP的地方,我用引号将它括起来。。。所以这与这个错误无关,是我在发邮件到So时清理的。。。谢谢:对象的对象很好,我以为它们是数组
series = [
    {
        "game":"Portal 2",
        "name":"Portal 2"
    },
    {
        "game":"Minecraft",
        "name":"241"
    } ... ];