我使用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属性按升序或降序对对象进行排序?
如果您有符合ES6标准的浏览器,您可以使用:
箭头功能Number()函数sort()函数
升序和降序之间的区别是比较函数返回的值的符号:
var ascending = homes.sort((a, b) => Number(a.price) - Number(b.price));
var descending = homes.sort((a, b) => Number(b.price) - Number(a.price));
下面是一个工作代码片段:
var家=[{“h_id”:“3”,“城市”:“达拉斯”,“状态”:“TX”,“zip”:“75201”,“价格”:“162500”}, {“h_id”:“4”,“城市”:“贝弗利山”,“状态”:“CA”,“zip”:“90210”,“price”:“319250”}, {“h_id”:“5”,“城市”:“纽约”,“州”:“NY”,“zip”:“00010”,“价格”:“962500”}];homes.sort((a,b)=>编号(a.price)-编号(b.price));console.log(“升序”,homes);homes.sort((a,b)=>编号(b.price)-编号(a.price));console.log(“下降”,homes);
你需要两个功能
function desc(a, b) {
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
}
function asc(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
}
然后可以将其应用于任何对象属性:
data.sort((a, b) => desc(parseFloat(a.price), parseFloat(b.price)));
让数据=[{label:“一”,值:10},{label:“two”,值:5},{label:“three”,值:1},];//排序函数函数desc(a,b){返回b<a-1:b>a?1:b>=a?0:NaN;}函数asc(a,b){返回a<b-1:a>b?1:a>=b?0:NaN;}//描述(DESC)data.sort((a,b)=>desc(a.value,b.value));document.body.insert相邻HTML('之前','<strong>DESC排序</strong><pre>'+JSON.stringify(数据)+'</pre>');//美国科学院data.sort((a,b)=>asc(a.value,b.value));document.body.insert相邻HTML('之前','<strong>ASCending sorted</strong><pre>'+JSON.stringify(数据)+'</pre>');