Tengo un código para obtener varias filas seleccionadas. Puedo obtener todas las filas de datos, pero planeo obtener datos específicos que merezcan. Estoy atascado en obtener el valor específico de los méritos de cada fila seleccionada y quiero hacer un código para su mediana. Por favor avise.
const median = {{ employeesTable.selectedRow.data }}
return median
Aquí hay una muestra de datos y lo que me gustaría obtener son solo los méritos, que son 10 y 14, por ejemplo, y obtener su mediana.
[{
id:"15"
email:"cornflakes123@gmail.com"
employee_name:"Mark"
merits:10
},
{
id:"12"
email:"fourleaves@gmail.com"
employee_name:"Grey"
merits:14
}]
Mi resultado deseado para mostrar es la mediana de los méritos que se seleccionan. Por ejemplo, si se seleccionan tres filas, se recopilan sus méritos y luego se les da una mediana.
Ejemplo, si las tres filas tienen los méritos de 5, 11 y 12, entonces mi resultado deseado es mostrar la mediana 11 en el valor de "retorno".
Obtener la mediana con la siguiente función (gracias a https://stackoverflow.com/a/53660837/8820118 ):
let data = [
{
id: "15",
email: "cornflakes123@gmail.com",
employee_name: "Mark",
merits: 1,
},
{
id: "12",
email: "fourleaves@gmail.com",
employee_name: "Grey",
merits: 5,
},
{
id: "12",
email: "fourleaves@gmail.com",
employee_name: "Grey",
merits: 100,
},
{
id: "12",
email: "fourleaves@gmail.com",
employee_name: "Grey",
merits: 100,
},
{
id: "12",
email: "fourleaves@gmail.com",
employee_name: "Grey",
merits: 500,
},
]
function median(myData) {
const sorted = Array.from(myData.map((item) => item.merits)).sort((a, b) => a - b);
const middle = Math.floor(sorted.length / 2);
if (sorted.length % 2 === 0) {
return (sorted[middle - 1] + sorted[middle]) / 2;
}
return sorted[middle];
}
console.log(median(data));
Según su comentario, desea devolver el valor de mérito más bajo de su matriz.
const data = {{ employeesTable.selectedRow.data }}
//now that we have the data we can get min and max value
let min = Math.min(...data.map(item => item.merits));
let max = Math.max(...data.map(item => item.merits));
return min; //or return max
Simplemente seleccione la clave de su objeto. Aquí hay un pequeño ejemplo basado en el código proporcionado:
const employeesTable = {
selectedRow: {
data: [
{
id: "15",
email: "cornflakes123@gmail.com",
employee_name: "Mark",
merits: 10,
},
{
id: "12",
email: "fourleaves@gmail.com",
employee_name: "Grey",
merits: 14,
},
],
},
};
//iterate over the array
for (let i = 0; i < employeesTable.selectedRow.data.length; i++) {
console.log(getMerits(i)); //return merit for that entry
}
function getMerits(index) {
return employeesTable.selectedRow.data[index].merits;
}
Proporcione más detalles ya que su pregunta puede significar otra cosa, por ejemplo, solo recuperar aquellos con valor 10 y 14. En ese caso, proporcione más información sobre lo que está tratando de lograr.
employeesTable.selectedRow.data.forEach((ele)=>{
console.log(ele.id)
})