Considere esta matriz de objetos:
[ { key1: "AAA", key2: "BBB" }, { key1: "BBB", key2: "CCC" }, { key1: "CCC", key2: "DDD" }, { key1: "XXX", key2: "YYY" }, ] ¿Cómo se escribe una función concisa para agruparlos, de modo que si la key1 1 del siguiente objeto es igual a la key2 del anterior, los objetos posteriores se convertirán en uno?
La salida deseada del ejemplo anterior:
[ { key1: "AAA", key2: "DDD" }, { key1: "XXX", key2: "YYY" }, ]Puedes hacer esto con reduce :
const input = [ { key1: "AAA", key2: "BBB" }, { key1: "BBB", key2: "CCC" }, { key1: "CCC", key2: "DDD" }, { key1: "XXX", key2: "YYY" }, ] const result = input.reduce( (acc,i) => { const last = acc[acc.length-1]; if(last === undefined || last.key2 != i.key1){ acc.push({...i}); } else{ acc[acc.length-1] = {...last, key2:i.key2}; } return acc; },[]); console.log(result);