2017-10-11 231 views
1

找到了這個主題的幾個線程,但無法解決他們的問題。循環嵌套對象

我有一個對象像這樣的:

allItems: { 
      item1: { 
       val1: 4, 
       val2: 'blaharb' 
        }, 
      itemxyz2: { 
       val1: 76, 
       val2: 'blurb' 
        } 
      } 

現在我只是希望把一個列表就像

物品1具有4 val1和blaharb爲VAL2
itemxyz2有76 val1和blurb for val2

我到目前爲止嘗試:

console.log(allItems.item1.val1); // prints correctly '4' in the console 

$.each(allItems, function(key, value) { 
console.log(key); // gives me correct key (like 'item1') 
console.log(allItems.item1.val1);// error: "undefined is not an object" - but why?! 
console.log(allItems.key.val1); // same error, understandable ... 
}); 

非常感謝幫助,謝謝!

回答

3

您可以用數組語法訪問對象屬性:

$.each(allItems, function(key, value) { 
    console.log(allItems[key]["val1"]); 
    console.log(allItems[key]["val2"]); 
}); 

例子:

var allItems = { 
 
    item1: { 
 
    val1: 4, 
 
    val2: 'blaharb' 
 
    }, 
 
    itemxyz2: { 
 
    val1: 76, 
 
    val2: 'blurb' 
 
    } 
 
}; 
 

 

 
$.each(allItems, function(key, value) { 
 
    console.log(allItems[key]["val1"]); 
 
    console.log(allItems[key]["val2"]); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

感謝您的超快速的答案,@Aknosis - 這正是我所需要的信息。 – BNetz

0

你需要使用 「值」 選項。

,如:

$.each(allItems, function(key, value) { 
      console.log(key, value.val1); 
      console.log(key, value.val2); 
    });