我使用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属性按升序或降序对对象进行排序?


当前回答

使用lodash.sortBy(使用commonjs的说明,您也可以将cdn的脚本include标记放在html的顶部)

var sortBy = require('lodash.sortby');
// or
sortBy = require('lodash').sortBy;

降序

var descendingOrder = sortBy( homes, 'price' ).reverse();

升序

var ascendingOrder = sortBy( homes, 'price' );

其他回答

这可以通过一个简单的单行值of()排序函数实现。运行下面的代码片段以查看演示。

var家=[{“h_id”:“3”,“城市”:“达拉斯”,“状态”:“TX”,“zip”:“75201”,“价格”:“162500”}, {“h_id”:“4”,“城市”:“贝弗利山”,“状态”:“CA”,“zip”:“90210”,“price”:“319250”}, {“h_id”:“5”,“城市”:“纽约”,“州”:“NY”,“zip”:“00010”,“价格”:“962500”}];console.log(“要首先对降序/最高排序,请使用运算符'<'”);homes.sort(函数(a,b){return a.price.valueOf()<b.price.vvalueOf(;});console.log(homes);console.log(“要首先对升序/最低排序,请使用运算符'>'”);homes.sort(函数(a,b){return a.price.valueOf()>b.price.vvalueOf(;});console.log(homes);

有了ECMAScript 6,StoBor的答案可以更加简洁:

homes.sort((a, b) => a.price - b.price)

用于字符串排序,以防有人需要,

常量数据Arr={“您好”:[{“id”:114,“关键字”:“zzzzzz”,“地区”:“斯里兰卡”,“supportGroup”:“administrators”,“category”:“类别2”}, {“id”:115,“关键字”:“aaaaa”,“地区”:“日本”,“supportGroup”:“开发者”,“category”:“类别2”}]};const sortArray=dataArr['hello'];console.log(sortArray.sort((a,b)=>{如果(a.region<b.region)返回-1;如果(a.region>b.region)返回1;返回0;}));

如果不想使用任何sort()方法,可以使用以下方法

函数sortObj(obj){设numArr=[]//仅包含价格作为Number的数组让sortedObj=[];对象映射((x)=>{numArr.push(数字(x[“价格”]));});而(numArr.length>0){让minIndex=numArr.indexOf(数学最小(…numArr))//obj最便宜的住宅指数numArr.拼接(最小索引,1);排序对象推送(对象拼接(minIndex,1));//将最便宜的家庭从Homes Array拼接到sortedObj Array。}console.log(sortedObj);}var家=[{h_id:“3”,城市:“达拉斯”,状态:“TX”,邮编:“75201”,价格:“162500”,},{h_id:“4”,城市:“贝弗利山”,状态:“CA”,邮编:“90210”,价格:“319250”,},{h_id:“5”,城市:“纽约”,州:“NY”,邮编:“00010”,价格:“962500”,},];sortObj(家);

对于多数组对象字段的排序。在arrprop数组中输入域名,如[“a”,“b”,“c”]然后传入我们要排序的第二个参数arrsource实际源。

function SortArrayobject(arrprop,arrsource){
arrprop.forEach(function(i){
arrsource.sort(function(a,b){
return ((a[i] < b[i]) ? -1 : ((a[i] > b[i]) ? 1 : 0));
});
});
return arrsource;
}