Me gustaría ampliar la pregunta que se hizo hace algún tiempo: ¿Cómo obtener valores distintos de una matriz de objetos en JavaScript?
mi caso es muy similar: tengo lo siguiente:
var array = [ {"name":"Doctor", "age":17}, {"name":"Doctor", "age":17}, {"name":"Doctor", "age":18}, {"name":"Nurse", "age":17}, {"name":"Nurse", "age": 35} {"name":"Nurse", "age": 35} ]¿Cuál es la mejor manera de poder obtener una matriz de todas las edades distintas, pero para la especialidad elegida, de modo que obtenga una matriz de resultados de:
filtrar por parámetro doctor : [17, 18]
filtrar por parámetro de nurse : [17, 35]
Usar funciones de matriz
const array = [{ "name": "Doctor", "age": 17 }, { "name": "Doctor", "age": 18 }, { "name": "Nurse", "age": 17 }, { "name": "Nurse", "age": 35 } ] console.log(getUniqueAges(array, 'Doctor')) console.log(getUniqueAges(array, 'Nurse')) function getUniqueAges(data, name) { return [...new Set(data .filter(datum => datum.name === name) .map(datum => datum.age))] }al igual que en la respuesta que vinculó, pero filtra (el ejemplo a continuación está filtrado por nombre ==="doctor) la matriz antes de pasarla al Conjunto:
const data = [ {"name":"Doctor", "age":17}, {"name":"Doctor", "age":18}, {"name":"Nurse", "age":17}, {"name":"Nurse", "age": 35} ]; const unique = [...new Set(data.filter(item => item.name === "doctor").map(item => item.age))]; // [ '17', '18']