<p>我使用AJAX获取了以下对象,并将它们存储在一个数组中:</p>
<pre class="brush:php;toolbar:false;">var homes = [
{
"h_id": "3",
"city": "达拉斯",
"state": "德克萨斯州",
"zip": "75201",
"price": "162500"
}, {
"h_id": "4",
"city": "贝弗利山庄",
"state": "加利福尼亚州",
"zip": "90210",
"price": "319250"
}, {
"h_id": "5",
"city": "纽约",
"state": "纽约州",
"zip": "00010",
"price": "962500"
}
];</pre>
<p>我如何使用JavaScript创建一个函数,仅使用<code>price</code>属性按升序<strong>或</strong>降序对对象进行排序?</p>
这是一个更灵活的版本,允许您创建可重用的排序函数,并按任何字段进行排序。
const sort_by = (field, reverse, primer) => { const key = primer ? function(x) { return primer(x[field]) } : function(x) { return x[field] }; reverse = !reverse ? 1 : -1; return function(a, b) { return a = key(a), b = key(b), reverse * ((a > b) - (b > a)); } } //现在您可以按任何字段排序... const 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"}]; // 按价格从高到低排序 console.log(homes.sort(sort_by('price', true, parseInt))); // 按城市排序,不区分大小写,按A-Z排序 console.log(homes.sort(sort_by('city', false, (a) => a.toUpperCase() )));按价格升序排序房屋:
homes.sort(function(a, b) { return parseFloat(a.price) - parseFloat(b.price); });或者在ES6版本之后:
可以在这里找到一些文档。
要按降序排序,您可以使用