数组中对象的 JavaScript 冒泡排序


假设,我们有一个构造器类,该类创建了如下 Shoe 对象 −

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')
];

我们需要编写一个 JavaScript 函数,准确地使用冒泡排序算法,根据对象的 price 属性对这个对象数组进行排序。

示例

代码如下 −

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);

输出

控制台里的输出如下 −

[
   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' }
]

更新于: 21-Nov-2020

476 次浏览

启动你的 职业生涯

完成课程,获得认证

开始学习
广告
© . All rights reserved.