Вам просто нужно создать объект с ключами, представляющими что-то уникальное для нужных вам групп.Например, вы можете сделать ключи, которые являются конкатенациями store_date
, и объект будет иметь только один из них, и его можно будет быстро получить, если у вас есть хранилище и дата.Вы можете построить такой объект с помощью Reduce.Получив объект, вы можете просто вызвать Object.values
, чтобы получить массив значений.Например:
let arr = [
{id:1, date: "10-02-18",store: 32, type: "short", tx: 4, failed: false},
{id:2, date: "10-02-18",store: 32, type: "long", tx: null, failed: true},
{id:3, date: "10-03-18",store: 32, type: "short", tx: 7, failed: false},
{id:4, date: "10-03-18",store: 32, type: "long ", tx: 10, failed: false}
]
let obj = arr.reduce((obj, {id, date, store, type, tx, failed}) => {
// make a unique key
key = `${date}_${store}`
// if we haven't seen this key add it with the outline of the object
if(!obj[key]) obj[key] = {date, store}
// add specific type to either the found obj or the new one
obj[key][type] = {tx, failed}
return obj
}, {})
// obj is an object keyed to date_store
// get just the values
console.log(Object.values(obj))