假设我们有一个构造函数类,可以创建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' } ]