我有一个复杂的对象,根据输入数组,我需要修改此复杂对象内部的属性。图示如下。我需要基于字段值将它们分组,然后将它们添加到对象的“或”数组(如果字段值相同)。如果不相同,则将其直接添加到“ and”对象数组中。需要从输入数组中读取每个字段,并检查它是否存在于“ filterObj”的“过滤器”中,如果存在,则将其添加到“和”,否则将其添加到“或”。
两者的格式如下所示
//This is the source object where I need to add the below "arr" based on grouping let filterObj = { "feature": "test", "filter": { "and": [ { "field": "field1","value": "1"} ] } }; //This array needs to be added to above object by grouping based on field let obj = [ {"field" : "field1","value": "2"}, {"field" : "field2","value": "3"}, {"field" : "field2","value": "4"}, {"field" : "field3","value" : "5"} ]
我希望输出具有以下格式:
var result = {
"feature": "test",
"filter": {
"and": [
{
"or" : [
{"field": "field1","value": "1"},
{"field": "field1", "value": "2"}
]
},
{
"or" : [
{"field": "field2","value": "3"},
{"field": "field2","value": "4"},
]
},
{ "field": "field3", "value": "5"}
]
}
}
// The method that I have tried
filterObj.filter.and.or(...obj) ;// Does not work
我有一个复杂的对象,根据输入数组,我需要修改此复杂对象内部的属性。图示如下。我需要根据字段值将它们分组,然后添加...
您可以通过分组来收集所有相同的字段,并将分组中的值分配给and
属性。