访问关联数组中关联数组的数据

Access data of associative array inside associative array

本文关键字:关联 数组 数据 访问      更新时间:2023-09-26

是否可以访问关联数组中关联数组的数据?

例如,

foo = {
  subFooA: 2,
  subFooB: subFooA
}

foo = {
  subFooA: 2
}
foo = {
  subFooB: subFooA
}

-编辑-谢谢你的回答。。。所以我认为这个是不可能的

filter = {
    leadlag: {
        parameters: {
            K: 1,
            fz: 20,
            fp: 40,
            wz: 2*math.pi*20,
            wp: 2*math.pi*40
        }
    }
}
filter.leadlag.continuous = {
    a: [filter.leadlag.parameters.K*filter.leadlag.parameters.wp*filter.leadlag.parameters.wz, filter.leadlag.parameters.K*filter.leadlag.parameters.wp],
    b: [filter.leadlag.parameters.wp*filter.leadlag.parameters.wz, filter.leadlag.parameters.wz]
}

更容易完成?

回答您的问题v 2.0:

是的,使用一个保存对对象的引用的辅助变量,它是可能的,也是可读的。

var filter = {
        leadlag: {
            parameters: {
                K: 1,
                fz: 20,
                fp: 40,
                wz: 2 * Math.PI * 20,
                wp: 2 * Math.PI * 40
            }
        }
    },
    p = filter.leadlag.parameters; // helper variable for better accessing
filter.leadlag.continuous = {
    a: [p.K *  p.wp * p.wz, p.K * p.wp],
    b: [p.wp * p.wz,  p.wz]
}
document.write('<pre>' + JSON.stringify(filter, 0, 4) + '</pre>');

是的,你也可以遵循不同的模式:

var foo = {}
foo.subFooB = foo.subFooA = 2;

我一直更喜欢使用setter函数,尽管这是一种更干净的方法:

function setFoo() {
  return 2;
}
var foo = {
  subfooA: setFoo(),
  subFooB: setFoo()
}

第一个是不可能的,而第二个你几乎做到了:

var foo = {
    subFooA: 2
};
foo.subFooB = foo.subFooA;