【问题标题】:Create Elements of an Object in a Loop在循环中创建对象的元素
【发布时间】:2014-01-24 20:34:57
【问题描述】:

我想在循环中创建对象的嵌套元素 这工作手册:

$tmp={ "items": {
            "key1": {"name": "alpha"},
            "key2": {"name": "bravo"},
            "key3": {"name": "charlie"}
             }
 }
         alert($tmp['items']['key2']['name'])

但是我怎样才能在一个循环中创建所有 val ??? 类似:

 for (var x = 0; x < 100; x++) {
   $tmp2={"key"+x: {"name": "name"+x}}
   $tmp.push($tmp2)

  }
        alert($tmp['items']['key0']['name'])

???

【问题讨论】:

  • 你试过了吗?发生了什么?
  • 另外,你只能push 到一个数组,而不是一个对象。您需要将 items 设为数组,然后将 $tmp['items'].push($tmp2);
  • 它将创建新的密钥 "0","1"($tmp['items'][0]['key0']['name'])

标签: javascript arrays loops object


【解决方案1】:

在循环外为您的键/值对声明容器,然后使用[] 语法将键添加到循环内的容器中。

 $tmp = { "items": {} };
 for (var x = 0; x < 10; x++) {
   // $tmp.items is equivalent to $temp["items"]
   $tmp.items["key"+x] = { "name" : "name" + x };
 }

这会导致:

{
  "items": {
    "key0": {
      "name": "name0"
    },
    "key1": {
      "name": "name1"
    },
    "key2": {
      "name": "name2"
    },
    "key3": {
      "name": "name3"
    },
    "key4": {
      "name": "name4"
    },
    "key5": {
      "name": "name5"
    },
    "key6": {
      "name": "name6"
    },
    "key7": {
      "name": "name7"
    },
    "key8": {
      "name": "name8"
    },
    "key9": {
      "name": "name9"
    }
  }
}

【讨论】:

    【解决方案2】:

    你可以这样做:

    var $tmp={ 'items': {} };
    
    for (var x=0; x<100; x++) {
        $tmp['items']['key'+x]={ 'name': 'name'+x };
    }
    
    alert($tmp['items']['key0']['name']);
    

    $tmp.items.keyN.name 的值只是nameN 似乎毫无意义..

    【讨论】:

      猜你喜欢
      • 2015-03-22
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 2016-02-22
      相关资源
      最近更新 更多