es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo crear un botón de clic que al hacer clic haga una función de ordenar el array de (a-b) y luego vuelva a hacer clic para ordenar el array de (b-a)?

Aquí está mi pregunta. ¿Cómo puedo hacer un botón que, al hacer clic, ordena el array con array.sort(x-y) y luego al hacer clic de nuevo lo ordena con array.sort(y-x)? Ya tengo la función, pero estoy confundido sobre cómo hacerlo…

Permíteme aclarar mi pregunta: cuando hago clic en el botón, ordeno el array de mayor a menor número y luego me gustaría presionar el mismo botón para ordenar el array de menor a mayor.

Aquí está mi código:

$(".lower").click(() => {
    colorsValueMenu("highest", "spot", "gainers", "losers", "lower")
    highest = arrayCoinsD.sort(function (a, b) { return b.quote.USD.percent_change_24h - a.quote.USD.percent_change_24h})
    createCoinDiv(arrayCoinsD, arrayCoinsI)
    $(".lower").click(() => {
        colorsValueMenu("lower", "spot", "gainers", "losers", "highest")
        lower = arrayCoinsD.sort(function (a, b) { return a.quote.USD.percent_change_24h - b.quote.USD.percent_change_24h})
        createCoinDiv(arrayCoinsD, arrayCoinsI)
    })
})

Funciona, pero solo la primera y segunda vez. Quiero que funcione como la acción toggleClass para cada clic individual.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el efecto de alternancia, puedes usar una variable para llevar un registro del orden de clasificación actual y alternarlo en cada clic del botón. Aquí está el código actualizado que implementa esto:

    let ascendente = true; // orden inicial de clasificación
    
    $(".sort-btn").click(() => {
      // alternar el orden de clasificación
      ascendente = !ascendente;
    
      // ordenar el array según el orden actual
      if (ascendente) {
        array.sort((x, y) => x - y);
      } else {
        array.sort((x, y) => y - x);
      }
    
      // actualizar la interfaz de usuario
      // ...
    });
    

    En este código, usamos una variable booleana ascendente para llevar un registro del orden de clasificación actual. Cuando se hace clic en el botón, alternamos el valor de ascendente usando el operador ! de negación.

    Luego, ordenamos el array según el valor actual de ascendente. Si es verdadero, usamos la función de retorno de llamada x - y para la clasificación, que ordena el array en orden ascendente. Si es falso, usamos la función de retorno de llamada y - x, que ordena el array en orden descendente.

    Finalmente, actualizamos la interfaz de usuario según sea necesario. Esta parte del código no se muestra, ya que depende de su caso de uso específico. Por ejemplo, es posible que desee actualizar una tabla, una lista o un gráfico con el array ordenado.

    Tenga en cuenta que la clase sort-btn es solo un ejemplo. Debe usar cualquier clase o ID que haya asignado a su botón en su código real.

Comments are closed.