用Javascript排序JSON对象

我一直在寻找排序这样的JSON对象的时间

{"results": [

{

"layerId": 5,

"layerName": "Pharmaceutical Entities",

"attributes": {

"OBJECTID": "35",

"FACILITYTYPE": "Pharmacy",

"FACILITYSUBTYPE": "24 Hr Pharmacy",

"COMMERCIALNAME_E": "SADD MAARAB PHARMACY",

},

"geometryType": "esriGeometryPoint",

},

{

"layerId": 5,

"layerName": "Pharmaceutical Entities",

"attributes": {

"OBJECTID": "1",

"FACILITYTYPE": "Pharmacy",

"FACILITYSUBTYPE": "24 Hr Pharmacy",

"COMMERCIALNAME_E": "GAYATHY HOSPITAL PHARMACY",

},

"geometryType": "esriGeometryPoint",

},

{

"layerId": 5,

"layerName": "Pharmaceutical Entities",

"attributes": {

"OBJECTID": "255",

"FACILITYTYPE": "Pharmacy",

"FACILITYSUBTYPE": "24 Hr Pharmacy",

"COMMERCIALNAME_E": "AL DEWAN PHARMACY",

},

"geometryType": "esriGeometryPoint",

}

]}

按字母顺序按“ COMMERCIALNAME_E”的值获取

{"results": [

{

"layerId": 5,

"layerName": "Pharmaceutical Entities",

"attributes": {

"OBJECTID": "255",

"FACILITYTYPE": "Pharmacy",

"FACILITYSUBTYPE": "24 Hr Pharmacy",

"COMMERCIALNAME_E": "AL DEWAN PHARMACY",

},

"geometryType": "esriGeometryPoint",

},

{

"layerId": 5,

"layerName": "Pharmaceutical Entities",

"attributes": {

"OBJECTID": "1",

"FACILITYTYPE": "Pharmacy",

"FACILITYSUBTYPE": "24 Hr Pharmacy",

"COMMERCIALNAME_E": "GAYATHY HOSPITAL PHARMACY",

},

"geometryType": "esriGeometryPoint",

},

{

"layerId": 5,

"layerName": "Pharmaceutical Entities",

"attributes": {

"OBJECTID": "35",

"FACILITYTYPE": "Pharmacy",

"FACILITYSUBTYPE": "24 Hr Pharmacy",

"COMMERCIALNAME_E": "SADD MAARAB PHARMACY",

},

"geometryType": "esriGeometryPoint",

}

]}

我找不到任何可以做到这一点的代码。谁能给我些帮助吗?

回答:

function sortJsonArrayByProperty(objArray, prop, direction){

if (arguments.length<2) throw new Error("sortJsonArrayByProp requires 2 arguments");

var direct = arguments.length>2 ? arguments[2] : 1; //Default to ascending

if (objArray && objArray.constructor===Array){

var propPath = (prop.constructor===Array) ? prop : prop.split(".");

objArray.sort(function(a,b){

for (var p in propPath){

if (a[propPath[p]] && b[propPath[p]]){

a = a[propPath[p]];

b = b[propPath[p]];

}

}

// convert numeric strings to integers

a = a.match(/^\d+$/) ? +a : a;

b = b.match(/^\d+$/) ? +b : b;

return ( (a < b) ? -1*direct : ((a > b) ? 1*direct : 0) );

});

}

}

sortJsonArrayByProperty(results, 'attributes.OBJECTID');

sortJsonArrayByProperty(results, 'attributes.OBJECTID', -1);

更新:请勿更改

function sortByProperty(objArray, prop, direction){

if (arguments.length<2) throw new Error("ARRAY, AND OBJECT PROPERTY MINIMUM ARGUMENTS, OPTIONAL DIRECTION");

if (!Array.isArray(objArray)) throw new Error("FIRST ARGUMENT NOT AN ARRAY");

const clone = objArray.slice(0);

const direct = arguments.length>2 ? arguments[2] : 1; //Default to ascending

const propPath = (prop.constructor===Array) ? prop : prop.split(".");

clone.sort(function(a,b){

for (let p in propPath){

if (a[propPath[p]] && b[propPath[p]]){

a = a[propPath[p]];

b = b[propPath[p]];

}

}

// convert numeric strings to integers

a = a.match(/^\d+$/) ? +a : a;

b = b.match(/^\d+$/) ? +b : b;

return ( (a < b) ? -1*direct : ((a > b) ? 1*direct : 0) );

});

return clone;

}

const resultsByObjectId = sortByProperty(results, 'attributes.OBJECTID');

const resultsByObjectIdDescending = sortByProperty(results, 'attributes.OBJECTID', -1);

以上是 用Javascript排序JSON对象 的全部内容, 来源链接: utcz.com/qa/400262.html

回到顶部