[英]How to search both parent and child object in Javascript/Lodash/ES6?
所以我正在使用Vue篩選列表。 這由以下結構組成( Baum層次結構,如果有興趣的話):
[
{
"id": 61,
"created_at": "2016-11-23 22:07:10",
"updated_at": "2016-12-15 19:44:56",
"parent_id": null,
"lft": 107,
"rgt": 116,
"depth": 0,
"name": "Quia eos voluptas molestiae ut cum.",
"slug": "consequatur-voluptatum-dolores-non-perferendis-possimus",
"order_column": null,
"belongs_to": null,
"children": [
{
"id": 57,
"created_at": "2016-11-23 22:07:10",
"updated_at": "2016-12-15 19:44:56",
"parent_id": 61,
"lft": 110,
"rgt": 113,
"depth": 1,
"name": "Molestias vitae velit doloribus.",
"slug": "enim-itaque-autem-est-est-nisi",
"order_column": null,
"belongs_to": null,
"children": []
},{
"name": "etc...",
}
每個項目可以有不定數量的子項,這些子項也可以如此等等。 就我而言,我只有2個層次,所以1個父母可以有很多(或沒有)孩子,但是那些孩子不能有孩子。
我想搜索/過濾父名稱字段和子名稱字段。 如果在子級中找到,我想返回父級對象。
我可以使用Lodash過濾父對象:
let search = this.search;
return _.filter(this.sortable, function(item) {
return item.name.search(new RegExp(search, "i")) !== -1;
});
我該如何搜尋父母和孩子?
您可以使用遞歸功能
var res = _.reduce(this.sortable, function reducer(result, item) {
if (item.name.search(new RegExp(search, "i")) !== -1) {
result.items = _.concat(result.items, result.parent || item);
}
result.items = _.concat(
result.items,
_.reduce(item.children, reducer, {parent: item, items: []}).items
)
return result;
}, {items: []}).items;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.