簡體   English   中英

循環對象內的數組內的對象內的數組 JavaScript

[英]Loop Object inside array inside object inside array JavaScript

我試圖在數組內的對象內循環對象內的對象,我真的很困惑!

這是我的 arr:

var arr = [
{
title: "Harry Potter",
categories: [
{
id: 39,
name: "Popular Books"
},
{
id: 3,
name: "Kids"
},
{
id: 79,
name: "All Books"
}
]
},


{
title: "Pride and Prejudice",
categories: [
{
id: 36,
name: "Classic Books"
},
{
id: 3,
name: "Woman"
},
{
id: 79,
name: "All Books"
}
]
}
]

如何獲得只有類別名稱“兒童”的書名?

目前我能想到的只有:

var find = function(arr){
  for(var i=0; i<arr.length; i++){
    for(var j=0; j<arr[i].categories; j++){
      console.log(arr[i].categories[j].name)
    }
  }
}

這是超級臟,無論如何都不起作用。 謝謝!

您可以使用 filter過濾掉那些類別匹配“Kids”的數組元素,然后它們的標題映射到一個新數組中。

arr.filter( i => i.categories.some(j => j.name ==="Kids") ).map(k => k.title )

 var arr = [{ title: "Harry Potter", categories: [{ id: 39, name: "Popular Books" }, { id: 3, name: "Kids" }, { id: 79, name: "All Books" } ] }, { title: "Pride and Prejudice", categories: [{ id: 36, name: "Classic Books" }, { id: 3, name: "Woman" }, { id: 79, name: "All Books" } ] } ]; console.log(arr.filter(i => i.categories.some(j => j.name === "Kids")).map(k => k.title));

試試:

var find = function(arr, name) {
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr[i].categories.length; j++) {
            if (arr[i].categories[j].name === name) {
                return arr[i].categories[j];
            }
        }
    }
}

find(arr, 'Kids')

暫無
暫無

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

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