Я получаю массив response
с повторяющимися значениями.Id
, Name
и Cod
, но есть и другие различия, такие как Indicator
.Поэтому я сгруппировал свой массив с помощью метода Reduce.Это мой массив:
let myArray = [
{
"id":1,
"name":"NAME1",
"cod":"00CC",
"indicator":{
"idIndicator":2,
"name":"MY-SECOND-NAME",
}
},
{
"id":1,
"name":"NAME1",
"cod":"00CC",
"indicator":{
"idIndicator":3,
"name":"MY-FIST-NAME",
}
},
{
"id":5,
"name":"DWWW",
"cod":"200CC",
"indicator":{
"idIndicator":2,
"name":"MY-SECOND-NAME",
}
},
{
"id":5,
"name":"DWWW",
"cod":"200CC",
"indicator":{
"idIndicator":3,
"name":"MY-FIST-NAME",
}
}
]
console.log("My Array with duplicate values:" )
console.log(myArray)
var group_to_values = myArray.reduce(function (obj, item) {
obj[item.cod] = obj[item.cod] || [];
obj[item.cod].push(item.indicator);
return obj;
}, {});
var groups = Object.keys(group_to_values).map(function (key) {
return {
cod: key,
indicatorItem: group_to_values[key]
};
});
console.log("My Array grouped:" )
console.log(groups)
Однако, поскольку reduce
использует только 1 элемент (key
), я теряю другие значения как: Id
, Name
Поэтому я попытался использовать .map()
и .filter()
для поиска таких элементов, как id
и name
, используя cod
в качестве ссылки, но я не добился большого успеха.Я куда-то иду, но не знаю, где: /
Поскольку я сравниваю элемент за элементом, конец моего возврата всегда будет последним элементом (cod
) в моем массиве.Я понимаю, что поэтому возврат составляет всего cod 00CC
Это мой код:
let returnedItens = null
myArray.map(itemArray => {
returnedItens = groups.filter(itemGroup => {
if (itemArray.cod == itemGroup.cod) {
return {
id: itemArray.id,
name: itemArray.name,
cod: itemGroup.cod,
indicator: itemGroup.indicator,
}
}
})
})
Итак, я хотел бы получить этот возврат с моим кодом выше:
[
{
"id":1,
"name":"NAME1",
"cod":"00CC",
"indicator":[
{
"idIndicator":2,
"name":"MY-SECOND-NAME",
},
{
"idIndicator":3,
"name":"MY-FIST-NAME",
}
]
},
{
"id":5,
"name":"DWWW",
"cod":"200CC",
"indicator":[
{
"idIndicator":2,
"name":"MY-SECOND-NAME",
},
{
"idIndicator":3,
"name":"MY-FIST-NAME",
}
]
}
]
Пожалуйста, кто-нибудь может мне помочь?Как я могу это сделать?