【问题标题】:Access dynamically named JavaScript Objects?访问动态命名的 JavaScript 对象?
【发布时间】:2010-02-09 22:01:39
【问题描述】:

我有一个 JS 对象:

var testObj = new Object();

它有一个名为 volume1 的属性,所以

testObj.volume1

有一个价值。我将如何通过使用类似于

的内容来访问该属性
testObj.volume + "1"

为了给它更多的上下文,对象实际上有更多的属性,比如

testObj.volume1, testObj.volume2 and testObj.volume3 

我想使用一些迭代来访问它们。我尝试过使用window[] 元素,但没有取得多大成功。

谢谢!

【问题讨论】:

    标签: javascript json


    【解决方案1】:
       testObj["volume" + 1]
    

    但你实际上想要一个数组

       testObj.volume = [...]
       testObj.volume[1] = whatever
    

    【讨论】:

      【解决方案2】:

      偏离主题被认为是更好的做法

      var testObj = {};
      

      而不是

      var testObj = new Object();
      

      【讨论】:

      • 抱歉,我是stackoverflow的新手
      【解决方案3】:

      testObj["volume" + "1"] 的方式使用一些东西;)

      符号object.propertyobject["property"] 在javascript 中(几乎)是等价的。

      【讨论】:

        【解决方案4】:

        您可以将for 循环与in 操作一起使用。

        for(var PropName in testObj) {
            var PropValue = testObj[PropName];
            ....
        }

        如果您只想要名称以“value”开头的属性,您也可以这样做:

        for(var PropName in testObj) {
            if (!/^value[0-9]$/.match(PropName))
                continue;
            var PropValue = testObj[PropName];
            ....
        }

        或者,如果“值”后面的数字始终是连续的,则可以使用基本的 for 循环。

        for(var I = 0; I <= LastIndex; I++) {
            var PropName  = "value" + I;
            var PropValue = testObj[PropName];
            ....
        }

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-05
          • 2019-02-26
          • 1970-01-01
          • 2013-07-21
          • 1970-01-01
          • 2018-03-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多