-1

我有两个像这样定义的数组

var theory= new Array();
var first;
var second;

function arrTheory () {
    this.first= first;
    this.second= second;
}

var subject= new Array();
...
function arrSubject () {
    ...
    this.theory= theory;
    ...
}

我如何访问更大的理论数组中的元素?我试过了

subject[0].theory.first;

但它不起作用

subject[0].name;

这是大阵列的另一个领域工作正常。我错过了什么?

4

4 回答 4

0
subject[0].theory[0].first;

试试看。

于 2013-04-27T15:15:20.677 回答
0

使用thisin arrTheory()andarrSubject()会导致语法错误,因为它们是函数而不是对象,您需要将这些属性设置为theorysubject数组,因此您必须使用对应的数组名称而不是如下所示:

var theory= new Array();
var first = "first";
var second = "second";

function arrTheory () {
    theory.first= first;
    theory.second= second;
}

var subject= new Array();
function arrSubject () {
    subject.theory= theory;
}
arrTheory();
arrSubject();

alert(subject.theory.first + " / " + subject.theory.second);

然后您可以像这样访问第一个和第二个属性:

subject.theory.first
subject.theory.second

在上面的代码中,属性名称没有在主题中设置,如果它已经在原始代码中设置,你可以这样调用它:

subject.name

jsfiddle

于 2013-04-27T15:16:00.773 回答
0

我认为关键是,你有一个元素为“obj”的数组并添加到另一个数组中。所以要访问一个你可以尝试

主题[0].理论[0].first;

我的意思是通过索引访问数组元素,它们访问对象的元素。

于 2013-04-27T15:08:40.853 回答
0

好的,根据您提供的信息,我有一个很好的猜测。

theoryinsubject[0].theory是一个数组,对吗?你怎么会这样用subject[0].theory.first?您应该使用像subject[0].theory[0].

在您向我们展示的代码中(在任何可能的编辑之前),您没有向var theory= new Array();

还要注意确保这this是您真正期望的。在 JavaScript 中, this 的上下文会根据调用者的上下文而变化,这有时会让人感到困惑。

于 2013-04-27T15:09:36.690 回答