Javascript 如何根据属性值对对象数组进行排序
关于下面的代码块,我有一个用于创建多个对象的类,每个对象包含关于特定汽车的一些基本信息。最后,我创建了这些对象的数组。我如何根据一个值,比如说,它们的重量,按照从最小到最重的升序,对这个对象数组进行排序Javascript 如何根据属性值对对象数组进行排序,javascript,arrays,class,sorting,Javascript,Arrays,Class,Sorting,关于下面的代码块,我有一个用于创建多个对象的类,每个对象包含关于特定汽车的一些基本信息。最后,我创建了这些对象的数组。我如何根据一个值,比如说,它们的重量,按照从最小到最重的升序,对这个对象数组进行排序 class raceCar { constructor(name, weight, lenght, width, height, horsePower, torque, colour){ this._name = name; this._weight =
class raceCar {
constructor(name, weight, lenght, width, height, horsePower, torque, colour){
this._name = name;
this._weight = weight;
this._lenght = lenght;
this._width = width;
this._height = height;
this._horsePower = horsePower;
this._torque = torque;
this._colour = colour;
}
get name(){
return this._name;
}
get weight(){
return this._weight;
}
get lenght(){
return this._lenght;
}
get width(){
return this._width;
}
get height(){
return this._height;
}
get horsePower(){
return this._horsePower;
}
get torque(){
return this._torque
}
get colour(){
return this._colour
}
}
const a45s = new raceCar ('a45s', 1550, 4445, 1850, 1412, 421, 500, 'black');
const m135i = new raceCar ('m135i', 1525, 4319, 1799, 1434, 306, 450, 'blue')
const golfR = new raceCar ('golfR', 1408, 4263, 1799, 1465, 310, 380, 'green')
const m240i = new raceCar ('240i', 1475, 4454, 1774, 1408, 340, 500, 'blue')
const cupra = new raceCar ('cupra', 1490, 4398, 1799, 1442, 300, 400, 'white')
var carArray = [a45s, m135i, golfR, m240i, cupra]
只需调用数组
sort()
方法。像这样:
carArray = carArray.sort((carA,carB) => carB.weight - carA.weight); // ascending order
carArray = carArray.sort((carA,carB) => carA.weight - carB.weight); // descending order
只需使用您知道的排序算法,但现在比较对象的键值:
carsArray[i].weight
。
在冒泡排序示例中,il如下所示:
for(let i = 0; i < carsArray.length; i++){
for(let j = 0; j < carsArray.length - 1; j++){
if(carsArray[j].weight < carsArray[j + 1].weight){
swapTheObjects();
}
}
}
for(设i=0;i
你好,谢谢你的回答,我只需要澄清一两件事,对不起,我是个初学者。我了解前两个for循环,您使用它们遍历数组中的每个值。我不太明白的是if语句。为什么它会说‘carsArray[j+1]。重量,+1有什么用?我认为swapTheObjects()的假设也是正确的;这将是我必须自己编写的一个方法吗?它将j
-th元素与右边的相邻元素(j+1
-th)进行比较如果j
-th元素的值大于j+1
-th-您只需要将j
-th元素放在j+1
-th的位置,将j+1
-th放在j
-th的位置。为了更好地理解,只需在YouTube上观看有关气泡排序的视频,因为我无法如此清楚地解释它。