Sample Question : - Given Array : -
var arr = [
{
name: 'honda',
color: 'red',
type : 'car'
},
{
name: 'honda',
color: 'red',
type : 'suv'
},
{
name: 'honda',
color: 'green',
type: 'van'
},
{
name: 'toyota',
color: 'red',
type: 'suv'
},
{
name: 'toyota',
color: 'red',
type: 'van'
}
]
Duplicate object depends on two fields : -
- name
- color
and if "type" is different and "name", "color" are same then "type" will be concatenated like array of string as shown in expected answer.
Expected Answer :
[
{
name: 'honda',
color: 'red',
type : ['car','suv']
},
{
name: 'honda',
color: 'green',
type: ['van']
},
{
name: 'toyota',
color: 'red',
type: ['suv','van']
}
]
type: 'suv','van'is invalid, so please indicate what your requirements are including valid syntaxresult = [...arr.reduce((a,{name,color,type})=>(a.set(`${name}:${color}`,(a.get(`${name}:${color}`)||{name, color, type:[]})),a.get(`${name}:${color}`).type.push(type),a),new Map).values()]``,...,new Mapand=>is - otherwise, it's just javascript