1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- //对数组排序ascii
- export function ksort(inputArr, sort_flags) {
- var tmp_arr = {},
- keys = [],
- sorter, i, k, that = this,
- strictForIn = false,
- populateArr = {};
- let php_js = {};
-
- switch (sort_flags) {
- case 'SORT_STRING':
- // compare items as strings
- sorter = function (a, b) {
- return that.strnatcmp(a, b);
- };
- break;
- case 'SORT_LOCALE_STRING':
- var loc = this.i18n_loc_get_default();
- sorter = php_js.i18nLocales[loc].sorting;
- break;
- case 'SORT_NUMERIC':
- // compare items numerically
- sorter = function (a, b) {
- return ((a + 0) - (b + 0));
- };
- break;
- default:
- sorter = function (a, b) {
- var aFloat = parseFloat(a),
- bFloat = parseFloat(b),
- aNumeric = aFloat + '' === a,
- bNumeric = bFloat + '' === b;
- if (aNumeric && bNumeric) {
- return aFloat > bFloat ? 1 : aFloat < bFloat ? -1 : 0;
- } else if (aNumeric && !bNumeric) {
- return 1;
- } else if (!aNumeric && bNumeric) {
- return -1;
- }
- return a > b ? 1 : a < b ? -1 : 0;
- };
- break;
- }
-
- // Make a list of key names
- for (k in inputArr) {
- if (inputArr.hasOwnProperty(k)) {
- keys.push(k);
- }
- }
- keys.sort(sorter);
-
- php_js = php_js || {};
- php_js.ini = php_js.ini || {};
- // END REDUNDANT
- strictForIn = php_js.ini['phpjs.strictForIn'] && php_js.ini['phpjs.strictForIn'].local_value && php_js
- .ini['phpjs.strictForIn'].local_value !== 'off';
- populateArr = strictForIn ? inputArr : populateArr;
-
- for (i = 0; i < keys.length; i++) {
- k = keys[i];
- tmp_arr[k] = inputArr[k];
- if (strictForIn) {
- delete inputArr[k];
- }
- }
- for (i in tmp_arr) {
- if (tmp_arr.hasOwnProperty(i)) {
- populateArr[i] = tmp_arr[i];
- }
- }
-
- return strictForIn || populateArr;
- }
|