У меня ниже JSON данные и ниже json - это мои фильтры с использованием этих фильтров Я хочу получить данные из этого массива объектов.
В моем массиве Filters есть 3 объекта, а ключи объектов являются ключами этого массива данных .
И в фильтрах каждый ключ имеет список значений в массиве. Эти массивы поля являются значениями этого массива данных.
Используя это, я хочу фильтровать , и фильтр может быть динамическим c.
Просто пример в массиве Filters - есть ключ региона, поэтому я проверю список регионов в приведенных ниже данных, затем в следующем ключе будет ключ элемента с некоторыми полями, затем я буду фильтровать Данные ключа элемента в том же регионе, затем в следующем ключе есть ключ Rep с некоторыми полями, тогда я буду фильтровать данные ключа Rep в том же элементе
И поле filter is dynamic c может быть более или менее
Я использую этот код, но не получаю должного результата
for(let filter of filters){
fields = filter[Object.keys(filter)[0]].fields;
key = Object.keys(filter)[0]
}
let new_temp_data = []
for(let field of fields){
for(let cdd=0; cdd<data.length; cdd++){
if(data[cdd][key] === field){
new_temp_data.push(data[cdd])
}
}
}
data = [
{
"OrderDate": "2019-01-06",
"Region": "East",
"Rep": "Jones",
"Item": "Pencil",
"Units": 95,
"Unit Cost": " 1.99 ",
"Total": " 189.05 ",
"unique_index": 0
},
{
"OrderDate": "2019-01-23",
"Region": "Central",
"Rep": "Kivell",
"Item": "Binder",
"Units": 50,
"Unit Cost": " 19.99 ",
"Total": " 999.50 ",
"unique_index": 1
},
{
"OrderDate": "2019-03-15",
"Region": "West",
"Rep": "Sorvino",
"Item": "Pencil",
"Units": 56,
"Unit Cost": " 2.99 ",
"Total": " 167.44 ",
"unique_index": 4
},
{
"OrderDate": "2019-04-01",
"Region": "East",
"Rep": "Jones",
"Item": "Binder",
"Units": 60,
"Unit Cost": " 4.99 ",
"Total": " 299.40 ",
"unique_index": 5
},
{
"OrderDate": "2019-05-22",
"Region": "West",
"Rep": "Thompson",
"Item": "Pencil",
"Units": 32,
"Unit Cost": " 1.99 ",
"Total": " 63.68 ",
"unique_index": 8
},
{
"OrderDate": "2019-06-08",
"Region": "East",
"Rep": "Jones",
"Item": "Binder",
"Units": 60,
"Unit Cost": " 8.99 ",
"Total": " 539.40 ",
"unique_index": 9
},
{
"OrderDate": "2019-07-12",
"Region": "East",
"Rep": "Howard",
"Item": "Binder",
"Units": 29,
"Unit Cost": " 1.99 ",
"Total": " 57.71 ",
"unique_index": 11
},
{
"OrderDate": "2019-07-29",
"Region": "East",
"Rep": "Parent",
"Item": "Pen",
"Units": 81,
"Unit Cost": " 19.99 ",
"Total": " 1,619.19 ",
"unique_index": 12
},
{
"OrderDate": "2019-08-15",
"Region": "East",
"Rep": "Jones",
"Item": "Desk",
"Units": 35,
"Unit Cost": " 4.99 ",
"Total": " 174.65 ",
"unique_index": 13
},
{
"OrderDate": "2019-09-01",
"Region": "Central",
"Rep": "Smith",
"Item": "Desk",
"Units": 2,
"Unit Cost": " 125.00 ",
"Total": " 250.00 ",
"unique_index": 14
}
]
filters = [
{
"Region": {
"fields": [
"East"
],
"type": "dropdown"
}
},
{
"Item": {
"fields": [
"Binder",
"Pencil"
],
"type": "dropdown"
}
},
{
"Rep": {
"fields": [
"Jones"
],
"type": "dropdown"
}
}
]
expected_result = [
{
"OrderDate": "2019-01-06",
"Region": "East",
"Rep": "Jones",
"Item": "Pencil",
"Units": 95,
"Unit Cost": " 1.99 ",
"Total": " 189.05 ",
"unique_index": 0
},
{
"OrderDate": "2019-04-01",
"Region": "East",
"Rep": "Jones",
"Item": "Binder",
"Units": 60,
"Unit Cost": " 4.99 ",
"Total": " 299.40 ",
"unique_index": 5
},
{
"OrderDate": "2019-06-08",
"Region": "East",
"Rep": "Jones",
"Item": "Binder",
"Units": 60,
"Unit Cost": " 8.99 ",
"Total": " 539.40 ",
"unique_index": 9
}
]