基于另一个对象数组修改对象数组



我有一个包含parent product选项的数组:

"options": [
{
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"values": [
{
"_id": "5ce3f95d35ad1e0999ee18dc",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 6 / 38",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18dd",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 6.5 / 39",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18de",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 7 / 39.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18df",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 7.5 / 40",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e0",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 8 / 41",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e1",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 8.5 / 41.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e2",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 9 / 42",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e3",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 9.5 / 42.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e4",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 10 / 43",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e5",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 10.5 / 44",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e6",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 11 / 44.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e7",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 11.5 / 45",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e8",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 12 / 46",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e9",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 12.5 / 46.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18ea",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 13 / 47",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
],
"name": "ΥΠΟΔΥΣΗ | USA / EU ΜΕΓΕΘΗ 6/38 - 13/47",
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown",
"__v": 0
},
{
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"is_required": true,
"name": "Χρωματα",
"option_id": "",
"option_set_id": "",
"sort_order": 0,
"type": "swatch",
"values": [
{
"label": "Μονοκολορ",
"sort_order": 0,
"value": "",
"_id": "5df780dc603399b430e7b248"
},
{
"_id": "5df780ec603399b430e7b249",
"is_default": false,
"is_required": true,
"label": "Δικολορ",
"sort_order": 0,
"value": "#363030|#cd1bce",
"value_data": null
},
{
"_id": "5df780f7603399b430e7b24a",
"is_default": false,
"is_required": true,
"label": "Τρικολορ",
"sort_order": 0,
"value": "#33cfb0|#308464|#819bca",
"value_data": null
}
]
}
]

我也有这个variants数组:

[{
"_id": "5df7812f136d32086e605bae",
"options": [
{
"option": {
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown"
},
"value": {
"_id": "5ce3f95d35ad1e0999ee18dc",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 6 / 38",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
},
{
"option": {
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"sort_order": 0,
"type": "swatch"
},
"value": {
"label": "Μονοκολορ",
"sort_order": 0,
"value": "",
"_id": "5df780dc603399b430e7b248"
}
}
],
},
{
"_id": "5df7812f136d32086e605bb2",
"options": [
{
"option": {
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown"
},
"value": {
"_id": "5ce3f95d35ad1e0999ee18dd",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 6.5 / 39",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
},
{
"option": {
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"sort_order": 0,
"type": "swatch"
},
"value": {
"_id": "5df780ec603399b430e7b249",
"is_default": false,
"is_required": true,
"label": "Δικολορ",
"sort_order": 0,
"value": "#363030|#cd1bce",
"value_data": null
}
}
],
},
{
"_id": "5df7812f136d32086e605bc3",
"options": [
{
"option": {
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown"
},
"value": {
"_id": "5ce3f95d35ad1e0999ee18e3",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 9.5 / 42.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
},
{
"option": {
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"sort_order": 0,
"type": "swatch"
},
"value": {
"label": "Μονοκολορ",
"sort_order": 0,
"value": "",
"_id": "5df780dc603399b430e7b248"
}
}
],
},
{
"_id": "5df7812f136d32086e605bcd",
"options": [
{
"option": {
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown"
},
"value": {
"_id": "5ce3f95d35ad1e0999ee18e6",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 11 / 44.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
},
{
"option": {
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"sort_order": 0,
"type": "swatch"
},
"value": {
"_id": "5df780ec603399b430e7b249",
"is_default": false,
"is_required": true,
"label": "Δικολορ",
"sort_order": 0,
"value": "#363030|#cd1bce",
"value_data": null
}
}
]
}
]

parent productoptions阵列具有产品可以具有的所有可能variants,但variants阵列具有库存大于0的变体。

如何更改/过滤parent productoptions数组以仅包含optionvalues来自variants数组?

示例输出:(如果我只有变体数组中No 6/38大小和颜色#363030|#cd1bce(

"options": [
{
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"values": [
{
"_id": "5ce3f95d35ad1e0999ee18dc",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 6 / 38",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
],
"name": "ΥΠΟΔΥΣΗ | USA / EU ΜΕΓΕΘΗ 6/38 - 13/47",
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown",
"__v": 0
},
{
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"is_required": true,
"name": "Χρωματα",
"option_id": "",
"option_set_id": "",
"sort_order": 0,
"type": "swatch",
"values": [
{
"label": "Μονοκολορ",
"sort_order": 0,
"value": "",
"_id": "5df780dc603399b430e7b248"
},
{
"_id": "5df780ec603399b430e7b249",
"is_default": false,
"is_required": true,
"label": "Δικολορ",
"sort_order": 0,
"value": "#363030|#cd1bce",
"value_data": null
}
]
}
]

这是我到目前为止尝试过的:

const tmpValues = new Set(
variants
.map(({ options }) => options.map((value) => value.value._id))
.flat()
);
const filteredOptions = options.filter(
({ values }) =>
values.every(
({ _id }) => tmpValues.has(_id)
)
);

我在这里准备了一个游乐场,让事情变得更容易:https://codesandbox.io/s/friendly-curie-9pz41

老实说,这种数据结构需要返工 - 什么是 ID 明智和 ID 在很多地方重复,很快就会混淆。

但我想我已经设法解决了它。首先,筛选选项值以匹配变体,筛选出变体的值并检查 ID 的匹配情况。函数位于底部。我使用 JSON 技巧来深度克隆对象,所以我没有接触原始对象。

const options = [
{
_id: "5ce3f95d35ad1e0999ee18db",
sort_order: 0,
values: [
{
_id: "5ce3f95d35ad1e0999ee18dc",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 6 / 38",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18dd",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 6.5 / 39",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18de",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 7 / 39.5",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18df",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 7.5 / 40",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18e0",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 8 / 41",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18e1",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 8.5 / 41.5",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18e2",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 9 / 42",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18e3",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 9.5 / 42.5",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18e4",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 10 / 43",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18e5",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 10.5 / 44",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18e6",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 11 / 44.5",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18e7",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 11.5 / 45",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18e8",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 12 / 46",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18e9",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 12.5 / 46.5",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
},
{
_id: "5ce3f95d35ad1e0999ee18ea",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 13 / 47",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
}
],
name: "ΥΠΟΔΥΣΗ | USA / EU ΜΕΓΕΘΗ 6/38 - 13/47",
display_name: "Μέγεθος (USA / EU)",
type: "text",
display_style: "dropdown",
__v: 0
},
{
_id: "5df780dc603399b430e7b247",
display_name: "swatch",
display_style: "swatch",
is_required: true,
name: "Χρωματα",
option_id: "",
option_set_id: "",
sort_order: 0,
type: "swatch",
values: [
{
label: "Μονοκολορ",
sort_order: 0,
value: "",
_id: "5df780dc603399b430e7b248"
},
{
_id: "5df780ec603399b430e7b249",
is_default: false,
is_required: true,
label: "Δικολορ",
sort_order: 0,
value: "#363030|#cd1bce",
value_data: null
},
{
_id: "5df780f7603399b430e7b24a",
is_default: false,
is_required: true,
label: "Τρικολορ",
sort_order: 0,
value: "#33cfb0|#308464|#819bca",
value_data: null
}
]
}
];
const variants = [
{
_id: "5df7812f136d32086e605bae",
options: [
{
option: {
_id: "5ce3f95d35ad1e0999ee18db",
sort_order: 0,
display_name: "Μέγεθος (USA / EU)",
type: "text",
display_style: "dropdown"
},
value: {
_id: "5ce3f95d35ad1e0999ee18dc",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 6 / 38",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
}
},
{
option: {
_id: "5df780dc603399b430e7b247",
display_name: "swatch",
display_style: "swatch",
sort_order: 0,
type: "swatch"
},
value: {
label: "Μονοκολορ",
sort_order: 0,
value: "",
_id: "5df780dc603399b430e7b248"
}
}
]
},
{
_id: "5df7812f136d32086e605bb2",
options: [
{
option: {
_id: "5ce3f95d35ad1e0999ee18db",
sort_order: 0,
display_name: "Μέγεθος (USA / EU)",
type: "text",
display_style: "dropdown"
},
value: {
_id: "5ce3f95d35ad1e0999ee18dd",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 6.5 / 39",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
}
},
{
option: {
_id: "5df780dc603399b430e7b247",
display_name: "swatch",
display_style: "swatch",
sort_order: 0,
type: "swatch"
},
value: {
_id: "5df780ec603399b430e7b249",
is_default: false,
is_required: true,
label: "Δικολορ",
sort_order: 0,
value: "#363030|#cd1bce",
value_data: null
}
}
]
},
{
_id: "5df7812f136d32086e605bc3",
options: [
{
option: {
_id: "5ce3f95d35ad1e0999ee18db",
sort_order: 0,
display_name: "Μέγεθος (USA / EU)",
type: "text",
display_style: "dropdown"
},
value: {
_id: "5ce3f95d35ad1e0999ee18e3",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 9.5 / 42.5",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
}
},
{
option: {
_id: "5df780dc603399b430e7b247",
display_name: "swatch",
display_style: "swatch",
sort_order: 0,
type: "swatch"
},
value: {
label: "Μονοκολορ",
sort_order: 0,
value: "",
_id: "5df780dc603399b430e7b248"
}
}
]
},
{
_id: "5df7812f136d32086e605bcd",
options: [
{
option: {
_id: "5ce3f95d35ad1e0999ee18db",
sort_order: 0,
display_name: "Μέγεθος (USA / EU)",
type: "text",
display_style: "dropdown"
},
value: {
_id: "5ce3f95d35ad1e0999ee18e6",
is_default: false,
is_required: true,
sort_order: 0,
value: "",
label: "No 11 / 44.5",
option_id: "5ce3f95d35ad1e0999ee18db",
__v: 0
}
},
{
option: {
_id: "5df780dc603399b430e7b247",
display_name: "swatch",
display_style: "swatch",
sort_order: 0,
type: "swatch"
},
value: {
_id: "5df780ec603399b430e7b249",
is_default: false,
is_required: true,
label: "Δικολορ",
sort_order: 0,
value: "#363030|#cd1bce",
value_data: null
}
}
]
}
];
const tmp = options.map(option => {
let newEle = JSON.parse(JSON.stringify(option));
let newValues = option.values.filter(value => {
if (
variants.filter(
vari =>
vari.options.filter(opt => opt.value._id === value._id).length >
0
).length > 0
) {
return true;
}
return false;
});
newEle.values = newValues;
return newEle;
});
console.log(tmp);

您可以使用filtersome方法:

const result = options.filter(f => 
f.values.some(s=> variants.some(v1 => 
v1.options.some(v2 => v2.value.value == s.value))));

举个例子:

const options = [
{
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"values": [
{
"_id": "5ce3f95d35ad1e0999ee18dc",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 6 / 38",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18dd",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 6.5 / 39",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18de",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 7 / 39.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18df",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 7.5 / 40",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e0",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 8 / 41",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e1",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 8.5 / 41.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e2",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 9 / 42",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e3",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 9.5 / 42.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e4",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 10 / 43",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e5",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 10.5 / 44",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e6",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 11 / 44.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e7",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 11.5 / 45",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e8",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 12 / 46",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18e9",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 12.5 / 46.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
},
{
"_id": "5ce3f95d35ad1e0999ee18ea",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 13 / 47",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
],
"name": "ΥΠΟΔΥΣΗ | USA / EU ΜΕΓΕΘΗ 6/38 - 13/47",
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown",
"__v": 0
},
{
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"is_required": true,
"name": "Χρωματα",
"option_id": "",
"option_set_id": "",
"sort_order": 0,
"type": "swatch",
"values": [
{
"label": "Μονοκολορ",
"sort_order": 0,
"value": "",
"_id": "5df780dc603399b430e7b248"
},
{
"_id": "5df780ec603399b430e7b249",
"is_default": false,
"is_required": true,
"label": "Δικολορ",
"sort_order": 0,
"value": "#363030|#cd1bce",
"value_data": null
},
{
"_id": "5df780f7603399b430e7b24a",
"is_default": false,
"is_required": true,
"label": "Τρικολορ",
"sort_order": 0,
"value": "#33cfb0|#308464|#819bca",
"value_data": null
}
]
}
]
const variants =[{
"_id": "5df7812f136d32086e605bae",
"options": [
{
"option": {
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown"
},
"value": {
"_id": "5ce3f95d35ad1e0999ee18dc",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 6 / 38",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
},
{
"option": {
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"sort_order": 0,
"type": "swatch"
},
"value": {
"label": "Μονοκολορ",
"sort_order": 0,
"value": "",
"_id": "5df780dc603399b430e7b248"
}
}
],
},
{
"_id": "5df7812f136d32086e605bb2",
"options": [
{
"option": {
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown"
},
"value": {
"_id": "5ce3f95d35ad1e0999ee18dd",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 6.5 / 39",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
},
{
"option": {
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"sort_order": 0,
"type": "swatch"
},
"value": {
"_id": "5df780ec603399b430e7b249",
"is_default": false,
"is_required": true,
"label": "Δικολορ",
"sort_order": 0,
"value": "#363030|#cd1bce",
"value_data": null
}
}
],
},
{
"_id": "5df7812f136d32086e605bc3",
"options": [
{
"option": {
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown"
},
"value": {
"_id": "5ce3f95d35ad1e0999ee18e3",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 9.5 / 42.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
},
{
"option": {
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"sort_order": 0,
"type": "swatch"
},
"value": {
"label": "Μονοκολορ",
"sort_order": 0,
"value": "",
"_id": "5df780dc603399b430e7b248"
}
}
],
},
{
"_id": "5df7812f136d32086e605bcd",
"options": [
{
"option": {
"_id": "5ce3f95d35ad1e0999ee18db",
"sort_order": 0,
"display_name": "Μέγεθος (USA / EU)",
"type": "text",
"display_style": "dropdown"
},
"value": {
"_id": "5ce3f95d35ad1e0999ee18e6",
"is_default": false,
"is_required": true,
"sort_order": 0,
"value": "",
"label": "No 11 / 44.5",
"option_id": "5ce3f95d35ad1e0999ee18db",
"__v": 0
}
},
{
"option": {
"_id": "5df780dc603399b430e7b247",
"display_name": "swatch",
"display_style": "swatch",
"sort_order": 0,
"type": "swatch"
},
"value": {
"_id": "5df780ec603399b430e7b249",
"is_default": false,
"is_required": true,
"label": "Δικολορ",
"sort_order": 0,
"value": "#363030|#cd1bce",
"value_data": null
}
}
]
}
]
const result = options.filter(f => f.values.some(s=> variants.some(v1 => v1.options.some(v2 => v2.value.value == s.value))));
console.log(result);

最新更新