陣列中物件的 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' }
]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP