Estoy tratando de aplicar un filtro en la matriz y obtener valores únicos. En la matriz a continuación, estoy aplicando el filtro en Group y luego extraigo valores únicos de Category . He escrito una función que funciona absolutamente bien, quería entender si es un enfoque eficiente para extraer valores únicos después del filtrado.
var myList = [ { "Fund": "Baroda Credit Risk Fund Plan B Direct Growth", "Group": "Equity", "Category": "ABCD", "Category Rank": 1 }, { "Fund": "Baroda Credit Risk Fund Plan B Direct Growth", "Group": "Debt", "Category": "Credit Risk", "Category Rank": 1 }, { "Fund": "Baroda Credit Risk Fund Plan B Direct Growth", "Group": "Equity", "Category": "XYZ", "Category Rank": 1 }, { "Fund": "Baroda Credit Risk Fund Plan B Direct Growth", "Group": "Equity", "Category": "XYZ", "Category Rank": 1 } ] function getUnique(myList, searchTerm) { // Filtering on 'Group' variable; var data_filter = myList.filter(element => element.Group == searchTerm); // Get values of CategoryList; var CategoryList = []; data_filter.forEach(item => { a = item.Category; CategoryList.push(a); }); // Unique values of CategoryList and then sort; var newarr = CategoryList.filter((x, y) => CategoryList.indexOf(x) == y).sort(); return (newarr); } console.log(getUnique(myList, "Equity"))Podrías hacer uso de Set .
Su lógica de filtro para filtrar la matriz de entrada es correcta. Para generar las categorías únicas, puede crear una matriz de categorías utilizando Array.map . De esa lista, puede elegir los elementos únicos usando Set . También ordene esa matriz única si es necesario.
violín de trabajo
var myList = [ { "Fund": "Baroda Credit Risk Fund Plan B Direct Growth", "Group": "Equity", "Category": "ABCD", "Category Rank": 1 }, { "Fund": "Baroda Credit Risk Fund Plan B Direct Growth", "Group": "Debt", "Category": "Credit Risk", "Category Rank": 1 }, { "Fund": "Baroda Credit Risk Fund Plan B Direct Growth", "Group": "Equity", "Category": "XYZ", "Category Rank": 1 }, { "Fund": "Baroda Credit Risk Fund Plan B Direct Growth", "Group": "Equity", "Category": "XYZ", "Category Rank": 1 }]; function getUnique(myList, searchTerm) { // Filtering on 'Group' variable; const data_filter = myList.filter(element => element.Group == searchTerm); const CategoryList = [...new Set(data_filter.map(item => item.Category))]; return CategoryList.sort(); } console.log(getUnique(myList, "Equity"));