Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp bong bóng JavaScript cho các đối tượng trong một mảng

Giả sử, chúng ta có một lớp phương thức khởi tạo tạo các đối tượng Shoe như thế này -

class Shoe {
   constructor(name, price, type) {
      this.name = name;
      this.price = price;
      this.type = type;
   }
};

Chúng tôi đang sử dụng lớp này để lấp đầy một mảng với các đối tượng như thế này -

const arr = [
   new Shoe('Nike AirMax 90', '120', 'Casual'),
   new Shoe('Jordan Retro 1', '110', 'Casual'),
   new Shoe('Jadon Doc Martens', '250', 'Seasonal boots'),
   new Shoe('Adidas X Ghosted', '110', 'Athletic'),
   new Shoe('Nike Vapourmax Flyknit', '250', 'Casual'),
   new Shoe('Aldo Loafers', '130', 'Formal'),
   new Shoe('Timberlands', '199', 'Seasonal boots'),
   new Shoe('Converse High Tops', '70', 'Casual'),
   new Shoe('Converse Low Tops', '80', 'Casual'),
   new Shoe('Adidas NMDs', '110', 'Athletic'),
   new Shoe('Heels', '130', 'Formal'),
   new Shoe('Nike AirForce', '150', 'Casual')
];

Chúng tôi được yêu cầu viết một hàm JavaScript sử dụng chính xác thuật toán Sắp xếp bong bóng để sắp xếp mảng đối tượng này dựa trên thuộc tính giá của đối tượng.

Ví dụ

Mã cho điều này sẽ là -

class Shoe {
   constructor(name, price, type) {
      this.name = name;
      this.price = price;
      this.type = type;
   }
};
const arr = [
   new Shoe('Nike AirMax 90', '120', 'Casual'),
   new Shoe('Jordan Retro 1', '110', 'Casual'),
   new Shoe('Jadon Doc Martens', '250', 'Seasonal boots'),
   new Shoe('Adidas X Ghosted', '110', 'Athletic'),
   new Shoe('Nike Vapourmax Flyknit', '250', 'Casual'),
   new Shoe('Aldo Loafers', '130', 'Formal'),
   new Shoe('Timberlands', '199', 'Seasonal boots'),
   new Shoe('Converse High Tops', '70', 'Casual'),
   new Shoe('Converse Low Tops', '80', 'Casual'),
   new Shoe('Adidas NMDs', '110', 'Athletic'),
   new Shoe('Heels', '130', 'Formal'),
   new Shoe('Nike AirForce', '150', 'Casual')
];
const bubbleSort = (arr = []) => {
   let swapped;
   do {
      swapped = false;
      for (let i = 0; i < arr.length − 1; i++) {
         if (+arr[i].price > +arr[i + 1].price) {
            let temp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = temp;
            swapped = true;
         };
      };
   }while (swapped);
}
bubbleSort(arr);
console.log(arr);

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   Shoe { name: 'Converse High Tops', price: '70', type: 'Casual' },
   Shoe { name: 'Converse Low Tops', price: '80', type: 'Casual' },
   Shoe { name: 'Jordan Retro 1', price: '110', type: 'Casual' },
   Shoe { name: 'Adidas X Ghosted', price: '110', type: 'Athletic' },
   Shoe { name: 'Adidas NMDs', price: '110', type: 'Athletic' },
   Shoe { name: 'Nike AirMax 90', price: '120', type: 'Casual' },
   Shoe { name: 'Aldo Loafers', price: '130', type: 'Formal' },
   Shoe { name: 'Heels', price: '130', type: 'Formal' },
   Shoe { name: 'Nike AirForce', price: '150', type: 'Casual' },
   Shoe { name: 'Timberlands', price: '199', type: 'Seasonal boots' },
   Shoe { name: 'Jadon Doc Martens', price: '250', type: 'Seasonal boots'},
   Shoe { name: 'Nike Vapourmax Flyknit', price: '250', type: 'Casual' }
]