簡體   English   中英

如何在Javascript中獲取subArray的所有子級

[英]How to get all children of a subArray in Javascript

所以這是我的問題:

這就是我的數組的樣子,我在這里(從控制台窗口)顯示了它的一部分。

數組

總體來說很基本吧? 除了它的索引。 如您所見,第一個的值為"1" ,第二個的值為"4" 至於子數組,它們也具有自定義索引。

因此,老式的:

for(i=0; i<array.length; i++){
  someVar = array[i];
  //do something
}

將無法正常工作。

我通過迭代另一個數組得到1或4,所以不需要獲取它們。

我想獲取所有subArrays(不是進一步嵌套的subArrays,僅是第二層)。

所以基本上我想要的是這樣的(是否有這樣的東西?):

array[someIndex].children.forEach(
  //do something with **this**
)

為了讓您更實用:我知道第一個數組的index 1 如何在不知道cat1cat2具有index 2情況下獲取它們的值( cat1 ,它也可以是642 )。 在這種情況下,第一個數組只有一個subArray,但我想使其適用於多個subArray。 (為澄清cat1 ,從第二級子cat2選擇cat1cat2 ,在這種情況下為index 2

在此先感謝您的幫助!

回聲

這些不是數組。 你有

[   {   "1": { etc...

這是一個包含對象的數組,該對象包含多個其他對象。 您實際上不能for(i=...)使用for(i=...)循環,因為您的鍵不是順序的。 您應該改為使用for ... in循環:

arr = [{"1":{....}}];

for (i in arr[0]) {
   for (j in arr[0][i]) {
       console.log(arr[0][i][j]['msg']);
   }
}

使用Object.getOwnPropertyNames可以獲取從小到大從小到大的順序。 迭代它們以獲得msg1

 var array = {"1":{"3":{"5":{"data":"someData","moreData":"someMoreData"},"msg1":"hello world","msg2":"foo equals bar"},"5":{"8":{"data":"someData","moreData":"someMoreData"},"msg1":"world hello","msg2":"bar equals foo"},"your_name":"jimmy","your_msg":"hello world"},"4":{"3":{"5":{"data":"someData","moreData":"someMoreData"},"msg1":"hello world","msg2":"foo equals bar"},"5":{"8":{"data":"someData","moreData":"someMoreData"},"msg1":"world hello","msg2":"bar equals foo"},"your_name":"billy","your_msg":"foo equals bar"}}; for(let key of Object.getOwnPropertyNames(array[1])) { if(Object(array[1][key]) !== array[1][key]) break; console.log('msg1 of "'+key+'": ' + array[1][key].msg1); } console.log('your_msg: ' + array[1].your_msg); 

您顯示的示例是一個只有一個索引的數組,該索引內有嵌套對象,您可以使用屬性迭代器(foreach)對其進行迭代。 由於您需要的值在那里,因此您必須進入第二級。

for (var key in object) {
    for(var anotherKey in object[key]) {
        //check for undefined 
        if(object[key][anotherKey].hasOwnProperty('msg')) {
            //code
        }

    }
}

{}-聲明對象(文字)

[]-聲明數組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM