JavaScript对象数据和数组

JavaScript object data and Arrays

本文关键字:数组 数据 对象 JavaScript      更新时间:2023-09-26

我有一个JavaScript对象,如下所示。

var sampleData = {
    "studentsList": {
        "Student1": {
            "marks": "123",
            "grade": "B"
        },
        "Student2": {
            "marks": "144",
            "grade": "A"
        }
    }
};​

现在用户输入一个学生的名字,比如Student1,我需要得到该对象的详细信息。

我有两个问题

[1]如何使用JavaScript获取输入学生的详细信息?

当我使用sampleData.studendsList.valueOf("Student1")时,会返回完整的对象。我只需要"Student1"的详细信息。

[2]这样做正确吗?或者我们应该创建一个Students数组,其中包含一个名为"name"的属性,值为Student1?如果我采用这种方法,那么我需要遍历整个数组列表,以获得学生的详细信息。

哪个学徒更好?

sampleData.studentsList.Student1sampleData.studentsList["Student1"]

数组通常是存储项目列表的更自然的方式(比如学生)。但也有一些权衡。作为结构化的(使用对象),您可以在恒定时间内按名称访问任何学生:

sampleData.studentsList.Student1

用一个数组构造如下:

var sampleData = {
    "studentsList": [
        {
            "marks": "123",
            "grade": "B"
        },
        {
            "marks": "144",
            "grade": "A"
        }
    ]
};​

访问nth学生如下:

sampleData.studentsList[n]

如果所需学生的索引未知,则访问特定学生(基于其详细信息)是O(n)(因为在最坏的情况下,您需要迭代整个数组才能找到正确的项目)。

[1]使用[]访问属性。这样,您就可以在那里插入一个变量,而不仅仅是一个硬编码的标识符。

var studentDetails = sampleData.studendsList[ "Student1" ];

[2]为了快速访问特定的学生,这是更好的方法。任何阵列都需要某种阵列扫描来访问特定的细节对象。

[1]给定一个存储在javascript变量中的学生名称,我们称之为studentName,您可以访问该学生的详细信息,如下所示:

var studentData = sampleData.studentsList[studentName];

[2]在数组或对象之间进行选择时,最大的决定因素是:关键是什么?如果键是不相关的或者只是数字,那么它应该是一个数组。在这种情况下,关键是学生的名字,所以有一个对象肯定是更好的选择。

编辑。。。我刚刚意识到,你只是在原地构建对象(而不是将其作为字符串)。。。所以实际上,您可以跳过解析,直接通过..访问对象。。
sampleData.studentsList.Student1

然而,如果你有一个确切的形状的对象,你有它,但作为一个字符串,你需要首先JSON.parse它,就像这样…

 myObj = JSON.parse(yourString);
    myObj.studentsList.Student1