从Javascript对象中检索特定值

时间:2014-04-24 04:20:26

标签: javascript jquery json

我有一个Javascript对象,其格式分配给javascript变量:

var events = 

[
   {
      "Id":20,
      "CustomerId":9,
      "CustomerName":"Mark Wikkins",
      "Code":"CT6789",
      "CustomerDate":"\/Date(1466679600000)\/",
      "Levels":[
         {
            "Id":92,
            "Nivel":0,
            "Code1":"Sales",
            "Code2":null,
            "Description":"Customer",
         },
         {
            "Id":94,
            "Nivel":0,
            "Code1":"Sales",
            "Code2":null,
            "Description":"Customer",
         }
      ]
   },
   {
      "Id":21,
      "CustomerId":14,
      "CustomerName":"John Stweart",
      "Code":"CT70000",
      "CustomerDate":"\/Date(146667970000)\/",
      "Levels":[
         {
            "Id":102,
            "Nivel":0,
            "Code1":"Jobs",
            "Code2":null,
            "Description":"Customer",       
         },
         {
            "Id":106,
            "Nivel":"0",
            "Code1":"Commissions",
            "Code2":null,
            "Description":"Customer",
         },
         {
            "Id":113,
            "Nivel":0,
            "Code1":"Organizations",
            "Code2":null,
            "Description":"Customer",
         }
      ]
   }
];

我有一个下拉列表,其中包含以下文字和值

<select name="customers_select" id="customers_select">
  <option value="92">Sales</option>
  <option value="106">Commisions</option>
  <option value="113">Organizations</option>
</select>

如果我想从下拉列表中选择CustomerDate,那么最好的方法是什么?

正如您可以看到select(下拉)映射到Level Id的值,但该级别是Javascript Object中父对象的属性。

因此,如果我从下拉列表中选择"Commisions",我需要评估我的变量事件并获取第二个对象的CustomerDate。

是否可以通过从事件Javascript Object数组中传递select的值来获取CustomerDate?

1 个答案:

答案 0 :(得分:2)

有两种方法可以做到这一点。

创建哈希表

循环遍历JavaScript对象并将Level_ids映射到CustomerDates,如下所示:

var hash = {};
hash["level-102"] = "\/Date(146667970000)\/";
hash["level-106"] = "\/Date(146667970000)\/";
hash["level-113"] = "\/Date(146667970000)\/";
... and so on

你可以通过使用jQuery的.each()函数遍历你的对象来做到这一点(并且你需要在其中使用另一个来遍历Level对象)。

在JavaScript select事件中,您可以获取id并创建一个字符串"level-" + id并在哈希表中查找:var customerDate = hash["level-" + id];

每次搜索JavaScript对象

保持JavaScript对象的原样,当用户从下拉列表中选择时,它会触发一个遍历复杂对象的事件处理程序,以查找level_id。在这样做时,它记住了当前的&#34; CustomerDate&#34;所以当找到它时,你会突破搜索循环。