Ordenar matriz de objetos

JavaScriptJavaScriptBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos cómo ordenar una matriz de objetos según las propiedades y órdenes proporcionadas. Utilizaremos el método Array.prototype.sort() y el método Array.prototype.reduce() para lograr esto. El laboratorio proporcionará una comprensión práctica de cómo manipular matrices de objetos en JavaScript.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/destr_assign("Destructuring Assignment") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28535{{"Ordenar matriz de objetos"}} javascript/data_types -.-> lab-28535{{"Ordenar matriz de objetos"}} javascript/arith_ops -.-> lab-28535{{"Ordenar matriz de objetos"}} javascript/comp_ops -.-> lab-28535{{"Ordenar matriz de objetos"}} javascript/cond_stmts -.-> lab-28535{{"Ordenar matriz de objetos"}} javascript/array_methods -.-> lab-28535{{"Ordenar matriz de objetos"}} javascript/higher_funcs -.-> lab-28535{{"Ordenar matriz de objetos"}} javascript/destr_assign -.-> lab-28535{{"Ordenar matriz de objetos"}} javascript/spread_rest -.-> lab-28535{{"Ordenar matriz de objetos"}} end

Cómo ordenar una matriz de objetos en JavaScript

Para ordenar una matriz de objetos en JavaScript, puedes utilizar el método Array.prototype.sort() y el método Array.prototype.reduce() en la matriz props con un valor predeterminado de 0.

A continuación, hay una función de ejemplo, orderBy, que ordena una matriz de objetos según las propiedades y órdenes especificadas:

const orderBy = (arr, props, orders = ["asc"]) =>
  [...arr].sort((a, b) =>
    props.reduce((acc, prop, i) => {
      if (acc === 0) {
        const [p1, p2] =
          orders[i] === "desc" ? [b[prop], a[prop]] : [a[prop], b[prop]];
        acc = p1 > p2 ? 1 : p1 < p2 ? -1 : 0;
      }
      return acc;
    }, 0)
  );

Para utilizar esta función, pasa una matriz de objetos, una matriz de propiedades por las que ordenar y una matriz opcional de órdenes. Si no se proporciona una matriz orders, la función ordenará por 'asc' por defecto.

A continuación, hay algunos ejemplos de cómo utilizar la función orderBy:

const users = [
  { name: "fred", age: 48 },
  { name: "barney", age: 36 },
  { name: "fred", age: 40 }
];

// ordenar por nombre ascendente y edad descendente
orderBy(users, ["name", "age"], ["asc", "desc"]);
// Salida: [{name: 'barney', age: 36}, {name: 'fred', age: 48}, {name: 'fred', age: 40}]

// ordenar por nombre ascendente y edad ascendente (orden predeterminado)
orderBy(users, ["name", "age"]);
// Salida: [{name: 'barney', age: 36}, {name: 'fred', age: 40}, {name: 'fred', age: 48}]

Resumen

¡Felicitaciones! Has completado el laboratorio de Ordenar Matriz de Objetos. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.