我有一个主列表,它是一个对象的嵌套数组,同时我也有一个选定的列表。
let masterList = [{
category_id: 1,
meta_list: [{
name: "Cuisine",
id: "QWEQWEQWE",
is_multiselect: false,
item_list: ["Arabian", "Indian"]
}, {
name: "Cost for Two",
id: "SFDFSDASDASDASD",
is_multiselect: true,
item_list: [
"AED 0 - 100",
"AED 100 - 200",
"Greater Than AED 200"
]
}]
}, {
category_id: 2,
meta_list: [{
name: "Cat 2",
id: "cat2",
is_multiselect: false,
item_list: ["cat 2 1", "cat 2 2"]
}, {
name: "cuisine 2",
id: "cui2",
is_multiselect: true,
item_list: ["cu1", "cu2"]
}]
}];
let selectedList = [{
category_id: 1,
meta_list: [{
name: "Cuisine",
id: "QWEQWEQWE",
is_multiselect: false,
item_list: ["Arabian"]
}, {
name: "Cost for Two",
id: "SFDFSDASDASDASD",
is_multiselect: true,
item_list: [
"AED 100 - 200",
"Greater Than AED 200"
]
}]
}, {
category_id: 2,
meta_list: [{
name: "cuisine 2",
id: "cui2",
is_multiselect: true,
item_list: ["cu1"]
}]
}];
[{
category_id: 1,
meta_list: [{
name: "Cuisine",
id: "QWEQWEQWE",
is_multiselect: false,
item_list: ["Arabian", "Indian"],
sel_list: ["Arabian"]
}, {
name: "Cost for Two",
id: "SFDFSDASDASDASD",
is_multiselect: true,
item_list: [
"AED 0 - 100",
"AED 100 - 200",
"Greater Than AED 200"
],
sel_list: [
"AED 100 - 200",
"Greater Than AED 200"
]
}]
}, {
category_id: 2,
meta_list: [{
name: "Cat 2",
id: "cat2",
is_multiselect: false,
item_list: ["cat 2 1", "cat 2 2"],
sel_list: ["cat 2 2"]
}, {
name: "cuisine 2",
id: "cui2",
is_multiselect: true,
item_list: ["cu1", "cu2"],
sel_list: ["cu1"]
}]
}];
masterList和selectedList的区别在于selectedList中的item_list属性是masterList中item_list的子集。
正如您在示例中看到的,masterList也可能有额外的项目。
{
name: "Cat 2",
id: "cat2",
is_multiselect: false,
item_list: ["cat 2 1", "cat 2 2"],
}
[{
category_id: 1,
meta_list: [{
name: "Cuisine",
id: "QWEQWEQWE",
is_multiselect: false,
item_list: ["Arabian", "Indian"],
sel_list: ["Arabian"]
}, {
name: "Cost for Two",
id: "SFDFSDASDASDASD",
is_multiselect: true,
item_list: [
"AED 0 - 100",
"AED 100 - 200",
"Greater Than AED 200"
],
sel_list: [
"AED 100 - 200",
"Greater Than AED 200"
]
}]
}, {
category_id: 2,
meta_list: [{
name: "Cat 2",
id: "cat2",
is_multiselect: false,
item_list: ["cat 2 1", "cat 2 2"],
sel_list: ["cat 2 2"]
}, {
name: "cuisine 2",
id: "cui2",
is_multiselect: true,
item_list: ["cu1", "cu2"],
sel_list: ["cu1"]
}]
}]
这里需要排除在selectedList
中的项目。
我该如何实现?
编辑:目前我的处理方法是这样的。
masterList.forEach(cat_met_item => {
selectedList.forEach(filled_cat_met_item => {
if (cat_met_item.category_id === filled_cat_met_item.category_id) {
cat_met_item.meta_list.forEach(met_item => {
filled_cat_met_item.meta_list.forEach(filled_met_item => {
if (met_item.id === filled_met_item.id) {
met_item["list"] = filled_met_item["item_list"];
}
});
});
}
});
});