【问题标题】:Storing and Retrieving Data in Arrays在数组中存储和检索数据
【发布时间】:2016-01-15 18:51:23
【问题描述】:

我需要你的帮助,

对于初学者,我在设置数组时遇到错误,如下所示。这样做的正确方法是什么,然后像下面这样检索它的数据?

var office_a = {    
    name: [{
        name: "Alpha Branch", mailstop: "AB"
    }],    
    divisions: [{
        division1: "Division 1 Office Name", mailstop: "DIV1",
        division2: "Division 2 Office Name", mailstop: "DIV2",
        division3: "Division 3 Office Name", mailstop: "DIV3"
    }]    
};

function test() {    
    alert(office_a[name].name); // -> "Alpha Branch"    
    alert(office_a[name].mailstop); // -> "B1"    
    alert(office_a[divisions][division1.name]); // -> "Division 1 Office Name"    
    alert(office_a[divisions][division1.mailstop]); // -> "DIV1"
}

test();

【问题讨论】:

  • 首先,您需要写:var office_a = {...} 缺少=; 运算符。然后你需要在每个部门之后写,。语法错误...我是否在每次提醒后都提到了;
  • 您需要阅读访问 JavaScript 对象的基础知识。 office_a[name] 指的是名称保存在变量name 中的属性。要引用属性name 本身,您需要office_a.nameoffice_a['name']。这将包含在任何基本的 JS 教程中。

标签: javascript arrays multidimensional-array associative-array


【解决方案1】:

试试这些(基本上你需要考虑关联数组中的数组索引)。检查这个fiddle

 var office_a = {    
    name: [{
        name: "Alpha Branch", mailstop: "AB"
    }],    
    divisions: [{
        division1: "Division 1 Office Name", mailstop: "DIV1",
        division2: "Division 2 Office Name", mailstop: "DIV2",
        division3: "Division 3 Office Name", mailstop: "DIV3"
    }]    
};
function test() {
console.log(office_a.name[0].name);
console.log(office_a.name[0].mailstop);
console.log(office_a.divisions[0].division1);
console.log(office_a.divisions[0].mailstop);
}
test();

【讨论】:

  • 如果没有定义变量name,这怎么可能?如果它不起作用,它怎么可能是公认的答案?顺便说一句,在 JS 中我们并不称它们为“关联数组”。
  • @torazaburo 对代码进行了更改,感谢您的指出。
  • @torazaburo 我也有同样的想法,但幸好有编辑按钮这样的东西
【解决方案2】:

我想我可能会扩展这个主题。如果您执行以下操作:

console.log(office_a);

您将能够在您的网络检查器上看到以下结果(我使用的是 Chrome)。我只会在此处输入相关信息以实现您想要实现的目标。

Object {name: Array[1], divisions: Array[1]}
    divisions: Array[1]
        0: Object
            division1: "Division 1 Office Name"
            division2: "Division 2 Office Name"
            division3: "Division 3 Office Name"
            mailstop: "DIV3"
    name: Array[1]
        0: Object
            mailstop: "AB"
            name: "Alpha Branch"

通过查看这个,您可以非常清楚地了解浏览器如何解释您的对象。这首先导致使用 JavaScript Literal Notation 以便通过objectName.propertyName 访问其内容:

console.log(office_a.name);
console.log(office_a.divisions);

这将产生上面看到的数组:

divisions
    0: Object
        division1: "Division 1 Office Name"
        division2: "Division 2 Office Name"
        division3: "Division 3 Office Name"
        mailstop: "DIV3"
name
    0: Object
        mailstop: "AB"
        name: "Alpha Branch"

您可以从这里访问每个单独对象的内容,在您的例子中,它是一个包含对象的数组。

console.log(office_a.name[0]);
console.log(office_a.divisions[0]);

正如我已经向您展示的那样,访问对象的特定内容就像在该对象中使用所需的属性一样简单。在您的情况下,您想查看所有内容,请执行以下操作:

console.log(office_a.name[0].name); // Alpha Branch
console.log(office_a.name[0].mailstop); // B1
console.log(office_a.divisions[0].division1); // Division 1 Office Name
console.log(office_a.divisions[0].mailstop); // DIV1

TL;DR

这导致以下结果(注意我修改了test()函数):

var office_a = {
  name: [{
    name: "Alpha Branch",
    mailstop: "AB"
  }],
  divisions: [{
    division1: "Division 1 Office Name",
    mailstop: "DIV1",
    division2: "Division 2 Office Name",
    mailstop: "DIV2",
    division3: "Division 3 Office Name",
    mailstop: "DIV3"
  }]
};

function test(myObject) {
  alert(myObject.name[0].name); // Alpha Branch
  alert(myObject.name[0].mailstop); // B1
  alert(myObject.divisions[0].division1); // Division 1 Office Name
  alert(myObject.divisions[0].mailstop); // DIV1
}

test(office_a);

【讨论】:

    猜你喜欢
    • 2018-05-15
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2015-04-26
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多