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);


