Javascript 如何使用下划线获取嵌套对象的内部数组?

Javascript 如何使用下划线获取嵌套对象的内部数组?,javascript,underscore.js,Javascript,Underscore.js,我得到一个表示书籍的对象数组。书中有嵌套的章节,每个章节都有嵌套的页面。我正在尝试使用where和/或chain和章节名称访问页面,但不知道如何引用页面进行迭代并获取名称和关键字。我的方法都不管用,显然我缺少一个关键的理解 var getPages = function(book, n) { _.chain(book.chapters).where({name:n})...how do I refer pages array from here?; or _.sel

我得到一个表示书籍的对象数组。书中有嵌套的章节,每个章节都有嵌套的页面。我正在尝试使用
where和/或chain
和章节名称访问
页面
,但不知道如何引用
页面
进行迭代并获取
名称
关键字
。我的方法都不管用,显然我缺少一个关键的理解

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"
}

就快到了,只需从所有返回的值中获取
页面
属性,并像这样将它们展平即可

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: '' } ]

这里,
返回一个数组,我们只是在数组中迭代,并创建一个新数组,其中仅包含单个对象中的
页面
对象。由于可能有多个匹配项,因此结果将是一个页面数组,因此我们将对其进行展平,最后获取值并返回。

我需要页面数组,以便我可以循环并使用它做一些事情。