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

Getting undefined from javascript array of arrays

本文关键字:数组 获取 未定义 javascript      更新时间:2023-09-26

这与我之前的问题有关,但略有不同,是一个全新的问题。。。我有一个数组,经过一些漂亮的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"
    }
}

此位填充良好。。。现在我的问题是,当调用这个函数时,它总是给gamenameundefined

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来射自己的脚:series['001']series['1']不一样。要么剪切parseInt调用(强制用户键入"001"),要么删除前导0s:

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 = {
    "001":{
        "game":"Portal 2",
        "name":"Portal 2"
    },
    "002":{
        "game":"Minecraft",
        "name":"241"
    } ... };

是一个对象文字,所以您有object of Objects,而不是您所说的Array of Arrays。

您需要一组对象才能使代码正常工作:

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