我使用AJAX获取了以下对象,并将它们存储在数组中:
var homes = [
{
"h_id": "3",
"city": "Dallas",
"state": "TX",
"zip": "75201",
"price": "162500"
}, {
"h_id": "4",
"city": "Bevery Hills",
"state": "CA",
"zip": "90210",
"price": "319250"
}, {
"h_id": "5",
"city": "New York",
"state": "NY",
"zip": "00010",
"price": "962500"
}
];
如何创建一个函数,仅使用JavaScript按price属性按升序或降序对对象进行排序?
要对数组进行排序,必须定义一个比较器函数。此函数始终根据您所需的排序模式或顺序(即升序或降序)而不同。
让我们创建一些函数,对数组进行升序或降序排序,并包含对象、字符串或数值。
function sorterAscending(a,b) {
return a-b;
}
function sorterDescending(a,b) {
return b-a;
}
function sorterPriceAsc(a,b) {
return parseInt(a['price']) - parseInt(b['price']);
}
function sorterPriceDes(a,b) {
return parseInt(b['price']) - parseInt(b['price']);
}
排序数字(按字母顺序和升序):
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
排序数字(按字母顺序和降序):
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();
排序编号(数字和升序):
var points = [40,100,1,5,25,10];
points.sort(sorterAscending());
排序编号(数字和降序):
var points = [40,100,1,5,25,10];
points.sort(sorterDescending());
如上所述,将sorterPriceAsc和sorterPriceDes方法用于具有所需键的数组。
homes.sort(sorterPriceAsc()) or homes.sort(sorterPriceDes())
Array.prototype.sortBy = function(callback) {
return this.sort((a, b) => callback(a) - callback(b))
}
[1,2,3,2].sortBy(i => i) // [1, 2, 2, 3]
[1,2,3,2].sortBy(i => i == 2) // [1, 3, 2, 2]
要对数组进行排序,必须定义一个比较器函数。此函数始终根据您所需的排序模式或顺序(即升序或降序)而不同。
让我们创建一些函数,对数组进行升序或降序排序,并包含对象、字符串或数值。
function sorterAscending(a,b) {
return a-b;
}
function sorterDescending(a,b) {
return b-a;
}
function sorterPriceAsc(a,b) {
return parseInt(a['price']) - parseInt(b['price']);
}
function sorterPriceDes(a,b) {
return parseInt(b['price']) - parseInt(b['price']);
}
排序数字(按字母顺序和升序):
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
排序数字(按字母顺序和降序):
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();
排序编号(数字和升序):
var points = [40,100,1,5,25,10];
points.sort(sorterAscending());
排序编号(数字和降序):
var points = [40,100,1,5,25,10];
points.sort(sorterDescending());
如上所述,将sorterPriceAsc和sorterPriceDes方法用于具有所需键的数组。
homes.sort(sorterPriceAsc()) or homes.sort(sorterPriceDes())