我得到一组代表书籍的对象。本书有嵌套的章节,每章都有嵌套的页面。我正在尝试使用pages
和该章的名称来where and/or chain
但不知道如何引用pages
来迭代并获得name
和{{1} }。我的方法都没有用,显然我错过了一个重要的理解。
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;
};
};
答案 0 :(得分:3)
你几乎就在那里,只从所有返回的值中获取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
对象的新数组。由于可能有多个匹配,结果将是一个页面数组的数组,因此我们将它展平并最终获取值并返回它。