У меня есть JSON данные ниже:
{
"items": [
{
"id": 3844,
"sku": "aaa",
"name": "aaa",
"attribute_set_id": 4,
"price": 2222,
"status": 1,
"visibility": 4,
"type_id": "simple",
"custom_attributes": [
{
"attribute_code": "special_price",
"value": "2222.000000"
},
{
"attribute_code": "brand",
"value": "5465"
},
{
"attribute_code": "category_ids",
"value": [
"75",
"791",
"793",
"799"
]
},
{
"attribute_code": "color",
"value": "5447"
},
{
"attribute_code": "size",
"value": "5432"
}
]
},
{
"id": 3843,
"sku": "HV 119",
"name": "Engine valve-Bajaj Pulsar 180cc DTSi",
"attribute_set_id": 4,
"price": 292,
"status": 1,
"visibility": 4,
"type_id": "simple",
"created_at": "2020-04-06 07:48:29",
"updated_at": "2020-04-06 07:48:29",
"weight": 0.25,
"tier_prices": [],
"custom_attributes": [
{
"attribute_code": "special_price",
"value": "292.000000"
},
{
"attribute_code": "brand",
"value": "777"
},
{
"attribute_code": "category_ids",
"value": [
"75",
"793",
"1350"
]
}
]
},
{
"id": 3842,
"sku": "HV 118",
"name": "Engine valve-Bajaj Pulsar 150cc DTSi / DIS.125",
"attribute_set_id": 4,
"price": 274,
"status": 1,
"visibility": 4,
"type_id": "simple",
"created_at": "2020-04-06 07:46:01",
"updated_at": "2020-04-06 07:46:01",
"weight": 0.25,
"tier_prices": [],
"custom_attributes": [
{
"attribute_code": "special_price",
"value": "274.000000"
},
{
"attribute_code": "category_ids",
"value": [
"75",
"793",
"1350"
]
}
]
}
],
"search_criteria": {
"filter_groups": [
{
"filters": [
{
"field": "category_id",
"value": "75",
"condition_type": "eq"
}
]
}
],
"sort_orders": [
{
"field": "position",
"direction": "DESC"
}
],
"page_size": 3,
"current_page": 1
},
"total_count": 3
}
И у меня есть значение 777 . Мне нужны вышеуказанные данные, первый элемент имеет массив custom_attributes>attribute_code === brand
и его значение === 777. Я должен фильтровать таким образом. Кроме того, по вторым данным у меня нет даже custom_attributes->attribute_code === brand
. Так что я должен удалить эти данные и, наконец, нужно отфильтровать массив. Также в другом случае есть данные, соответствующие массиву category_ids
в custom_attribute
, который является массивом. Поэтому, используя указанное значение c, такое как 793
, мне также нужно отфильтровать.
Код, который я пробовал, ниже
let overAll = filt.items.filter(c => c.custom_attributes.map((i,j)=>{
if(i.attribute_code === "brand"){
return i.value === 777
}
}))
Ожидаемый вывод:
{
"items": [
{
"id": 3844,
"sku": "aaa",
"name": "aaa",
"attribute_set_id": 4,
"price": 2222,
"status": 1,
"visibility": 4,
"type_id": "simple",
"custom_attributes": [
{
"attribute_code": "special_price",
"value": "2222.000000"
},
{
"attribute_code": "brand",
"value": "777"
},
{
"attribute_code": "category_ids",
"value": [
"75",
"791",
"793",
"799"
]
},
{
"attribute_code": "color",
"value": "5447"
},
{
"attribute_code": "size",
"value": "5432"
}
]
}
],
"search_criteria": {
"filter_groups": [
{
"filters": [
{
"field": "category_id",
"value": "75",
"condition_type": "eq"
}
]
}
],
"sort_orders": [
{
"field": "position",
"direction": "DESC"
}
],
"page_size": 3,
"current_page": 1
},
"total_count": 3
}