2013-07-04 70 views
0

在對象中,我在多個實例中具有相同的鍵,但是值不同於「string」/「object」 - 如何找到值並使條件成爲不同的任務。jQuery對象循環 - 如何者區分的值,並分配不同的任務,在多個關鍵值相同..?

這是我的目標,並嘗試:

var obj = { 
    "Home":"Home link", 
    "Assignments":"Assignments link", 
    "Explorer":"Explorer link", 
    "Assignments":{ 
     "Projects":"Projects sub string", 
     "Background Jobs":"Background sub string", 
     "Workflow Engine Queue":"Workflow Engine Queue sub string", 
     "Filter Engine Queue":"Filter Engine Queue sub string", 
     "Quotes":"Quotes sub string", 
     "Issues":"Issues sub string" 
    }, 
    "Explorer":{ 
     "Term Databases":"Term Databases sub string", 
     "Translation Memories":"Translation Memories sub string", 
     "Personal Preferences":"Personal Preferences sub string", 
     "Manage Locale":"Manage Locale sub string" 
    } 
} 

var objetProcess = function(){ 
    $.each(obj, function(key, value){ 
     console.log(key,$.type(value)); 
    }) 
} 

objetProcess(); 

我期待環路整個對象,並找到值是「字符串」或「對象」 - 並設置相應的任務。

Here is the jsfiddle

+0

看起來你已經有解決方案,因爲你正在使用'$ .type()'來獲取對象的類型?裏面的'$。每()'回調您可以在類型簡單地切換,比如'如果($ .TYPE(值)==「串」){...}' –

+0

這就是你希望得到您的問題以「Explorer」爲例的兩個不同的值?在那種情況下,我認爲這是不可能的,因爲你第二次覆蓋了對象屬性中的值。您將不得不爲密鑰輸入不同的名稱。想想看。如果你做obj.Explorer你應該得到什麼?字符串或對象? – user688877

回答

3

你不能有兩個同名的鑰匙在一個單一的對象。在上面的例子中,資源管理器和分配密鑰總是會因爲其中一個字符串值設置語句之後是設置對象值的另一種說法是對象。

你最簡單的出路就是用別的東西來代替按鍵的名稱,或者如果你正在試圖建立類似的菜單層級,你需要創建更復雜的數據結構來保存你的信息。想到這樣的事情 -

var menu = [{label: "Home", url: "link"}, 
      {label: "Assignments", url: "link", 
      children: [{label: "Foo", url: "link"}, {label: "Bar", url: "link"}] 
      }, 
      {label: "Explorer", url: "link", 
      children: [{label: "Zac", url: "link"}, {label: "Cal", url: "link"}, {label: "Too", url: "link"}] 
      } 
      ]; 
+0

感謝Pranav。很高興聽到。 – 3gwebtrain

0

您可以通過objetProcess如下使用if條件做到這一點:

var objetProcess = function(){ 
    $.each(obj, function(key, value){ 
     if ($.type(value) === 'string') { 
      console.log('string task'); 
     } else if ($.type(value) === 'object') { 
      console.log('object task'); 
     } 
    }) 
} 

http://jsfiddle.net/qS6H2/5/

+0

我沒有,但我沒有得到循環1次,1個鍵..你可以更新的jsfiddle好嗎? – 3gwebtrain

+0

您要分配值'Assignments'和'Explorer'兩次,最後一個值將覆蓋較早的值 –

相關問題