[英]How to get inner array of nested object using underscorejs?
我得到了代表書籍的對象數組。 本書有嵌套的章節,每個章節都有嵌套的頁面。 我正在嘗試使用本章的where and/or chain
和名稱到達pages
where and/or chain
但不知道如何引用pages
進行迭代並獲取name
和keyword
。 我的方法都沒有奏效,顯然我缺少關鍵的理解。
var getPages = function(book, n) {
_.chain(book.chapters).where({name:n})...how do I refer pages array from here?;
or
_.select(_.where(book.chapters,{name:n}), function(p) {
return p.keyword + p.name;
};
};
嵌套數據:
{
"name": "Javascript for Dummies",
"chapters": [
{
"name": "Introduction",
"status": "passed",
"pages": [
{
"name": "page 10",
"keyword": "objects",
"status": "passed"
},
{
"name": "page 40",
"keyword": "methods",
"status": "failed"
},
{
"name": "",
"keyword": "",
"status": ""
}
]
},
{
"name": "Data Types",
"status": "passed",
"pages": [
{
"name": "page 33",
"keyword": "Strings",
"status": "passed"
},
{
"name": "",
"keyword": "",
"status": ""
},
{
"name": "",
"keyword": "",
"status": ""
}
]
}
],
"status": "failed"
}
您快到了,只需從所有返回的值中獲取pages
屬性,然后像這樣將它們展平
function getPages(book, n) {
return _.chain(book.chapters).where({
name: n
})
.map(function(currentObject) {
return currentObject.pages;
})
.flatten()
.value();
}
產量
[ { name: 'page 10', keyword: 'objects', status: 'passed' },
{ name: 'page 40', keyword: 'methods', status: 'failed' },
{ name: '', keyword: '', status: '' } ]
在這里, _.where
返回一個數組,而我們只是遍歷該數組並僅使用單個對象中的pages
對象創建一個新數組。 由於可能存在多個匹配項,因此結果將是一個頁面數組數組,因此我們將其展平,最后獲取值並返回它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.