如何使用 underscorejs 获取嵌套对象的内部数组?
How to get inner array of nested object using underscorejs?
我得到一组表示书籍的对象。书有嵌套的章节,每一章都有嵌套的页面。我正在尝试使用 where and/or chain
和章节名称到达 pages
,但不知道如何引用 pages
来迭代并获得 name
和 keyword
。 None 我的方法奏效了,显然我缺少一个关键的理解。
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
returns 一个数组,我们只是遍历该数组并创建一个新数组,其中仅包含来自各个对象的 pages
对象。由于可能有多个匹配项,结果将是一个页面数组的数组,所以我们将其展平,最后取值并返回。
我得到一组表示书籍的对象。书有嵌套的章节,每一章都有嵌套的页面。我正在尝试使用 where and/or chain
和章节名称到达 pages
,但不知道如何引用 pages
来迭代并获得 name
和 keyword
。 None 我的方法奏效了,显然我缺少一个关键的理解。
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
returns 一个数组,我们只是遍历该数组并创建一个新数组,其中仅包含来自各个对象的 pages
对象。由于可能有多个匹配项,结果将是一个页面数组的数组,所以我们将其展平,最后取值并返回。