다음과 같은 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 함수를 작성해야 합니다.
예시
이에 대한 코드는 -
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' } ]