js 模拟php ksort排序
function ksort(inputArr, sort_flags) { // example 1: data = {d: 'lemon', a: 'orange', b: 'banana', c: 'apple'}; // example 1: data = ksort(data); // example 1: $result = data // returns 1: {a: 'orange', b: 'banana', c: 'apple', d: 'lemon'} // example 2: ini_set('phpjs.strictForIn', true); // example 2: data = {2: 'van', 3: 'Zonneveld', 1: 'Kevin'}; // example 2: ksort(data); // example 2: $result = data // returns 2: {1: 'Kevin', 2: 'van', 3: 'Zonneveld'} var tmp_arr = {}, keys = [], sorter, i, k, that = this, strictForIn = false, populateArr = {}; switch (sort_flags) { case 'SORT_STRING': // compare items as strings sorter = function (a, b) { return that.strnatcmp(a, b); }; break; case 'SORT_LOCALE_STRING': // compare items as strings, original by the current locale (set with i18n_loc_set_default() as of PHP6) var loc = this.i18n_loc_get_default(); sorter = this.php_js.i18nLocales[loc].sorting; break; case 'SORT_NUMERIC': // compare items numerically sorter = function (a, b) { return ((a + 0) - (b + 0)); }; break; // case 'SORT_REGULAR': // compare items normally (don't change types) 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 inputArr =Object.assign(inputArr,{appkey:"cnmobicloud2017"}); console.log(inputArr) for (k in inputArr) { if (inputArr.hasOwnProperty(k)) { keys.push(k); } } keys.sort(sorter); // BEGIN REDUNDANT this.php_js = this.php_js || {}; this.php_js.ini = this.php_js.ini || {}; // END REDUNDANT strictForIn = this.php_js.ini['phpjs.strictForIn'] && this.php_js.ini['phpjs.strictForIn'].local_value && this.php_js .ini['phpjs.strictForIn'].local_value !== 'off'; populateArr = strictForIn ? inputArr : populateArr; // Rebuild array with sorted key names 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;
相关推荐
-
打开网页复制和粘贴功能 javascript
2019-1-8
-
js验证方法isBoolean.js javascript
2019-1-8
-
判断当前客户端是否移动设备 javascript
2019-1-8
-
js移动设备判断方法大全 javascript
2019-1-8
-
原生javasxript获取浏览器的滚动距离和可视窗口的高度 javascript
2019-1-8
-
工作中常用到的JS验证 javascript
2019-1-8
-
压缩上传图片 javascript
2019-1-7
-
JS验证身份证号 javascript
2019-1-8
-
用JavaScript将数字转换为大写金额 javascript
2019-1-8
-
收集一些正则表达式 javascript
2019-1-8