Necesito dejar en la matriz solo objetos con valores de nombre únicos. Filtra los primeros objetos únicos. El resto debe ser eliminado. Ahí está el ejemplo de matriz:
var arr = [ {name: "a", value: "1"}, {name: "a", value: "2"}, {name: "b", value: "1"}, {name: "b", value: "2"}, {name: "a", value: "3"}, {name: "b", value: "3"}, {name: "a", value: "4"}, {name: "b", value: "4"}, {name: "c", value: "5"}, ]Necesito conseguir algo asi:
var arr = [ {name: "a", value: "1"}, {name: "b", value: "1"}, {name: "c", value: "5"}, ]Estaría agradecido por la mejor manera, usando ES6 y más reciente
Use reduce y Object.values para acumular solo el primero de cualquier name dado
var arr = [ {name: "a", value: "1"}, {name: "b", value: "1"}, {name: "a", value: "2"}, {name: "b", value: "2"}, {name: "a", value: "3"}, {name: "b", value: "3"}, {name: "a", value: "4"}, {name: "b", value: "4"}, {name: "c", value: "5"}, ] const result = Object.values( arr.reduce((acc, i) => (acc[i.name] ??= i, acc), {}) ); console.log(result);