当前位置: 首页 > 后端技术 > PHP

javascript实现PHP字典排序ksort

时间:2023-03-29 18:19:16 PHP

/***javascript实现PHP字符串排序*@param{Object}vm当前this*@param{Array}inputArr指定要进行排序的数组*@param{String}sort_flags指定如何排序数组的元素/项ksort(vm,inputArr,sort_flags){//讨论:http://phpjs.org/functions/ksort///原创者:GeekFG(http://geekfg.blogspot.com)//改进者:KevinvanZonneveld(http://kevin.vanzonneveld.net)//改进者:BrettZamir(http://brett-zamir.me)//注意:示例是正确的,这是一种新方法//注意:此函数与PHP不同,它返回数组的副本,而不是//注意:通过引用执行并返回true;这是必要的,因为//注意:IE不允许在没有缓存的情况下删除和重新添加属性//注意:属性位置;您可以将“phpjs.strictForIn”的ini设置为true//注意:获取PHP行为,但仅当您在环境中时才使用它//注意:例如Firefox扩展s其中for-in迭代顺序是固定的且为真//注意:支持属性删除。请注意,我们打算实现PHP//note:默认情况下的行为,如果IE允许的话;只提供浅拷贝,因为//注意:无论如何在PHP中都是通过引用//注意:因为JS对象的键总是字符串,并且(//注意:默认)SORT_REGULAR标志按键类型区分,//注意:如果content是一个数字字符串,我们将//note:"originaltype"视为数字。//取决于:i18n_loc_get_default//取决于:strnatcmp//示例1:data={d:'lemon',a:'orange',b:'banana',c:'apple'};//示例1:data=ksort(data);//示例1:$result=data//返回1:{a:'orange',b:'banana',c:'apple',d:'lemon'}//示例2:ini_set('phpjs.strictForIn',真的);//示例2:data={2:'van',3:'Zonneveld',1:'Kevin'};//示例2:ksort(数据);//示例2:$result=data//返回2:{1:'Kevin',2:'van',3:'Zonneveld'}vartmp_arr={},keys=[],sorter,i,k,that=vm,strictForIn=false,populateArr={};switch(sort_flags){case'SORT_STRING'://将项目作为字符串进行比较sorter=function(a,b){returnthat.strnatcmp(a,b);};休息;case'SORT_LOCALE_STRING'://将项目作为字符串进行比较,原始由当前区域设置(从PHP6开始使用i18n_loc_set_default()设置)varloc=vm.i18n_loc_get_default();sorter=vm.php_js.i18nLocales[loc].sorting;休息;case'SORT_NUMERIC'://按数字比较项目sorter=function(a,b){return((a+0)-(b+0));};休息;//case'SORT_REGULAR'://正常比较项目(不改变类型)default:sorter=function(a,b){varaFloat=parseFloat(a),bFloat=parseFloat(b),aNumeric=aFloat+''===a,bNumeric=bFloat+''===b;如果(aNumeric&&bNumeric){返回aFloat>bFloat?1:a浮动b?1:一个<乙?-1:0;};休息;}//为(kininputArr)创建一个键名列表{if(inputArr.hasOwnProperty(k)){keys.push(k);}}keys.sort(分拣机);//开始冗余vm.php_js=vm.php_js||{};vm.php_js.ini=vm.php_js.ini||{};//结束冗余strictForIn=vm.php_js.ini['phpjs.strictForIn']&&vm.php_js.ini['phpjs.strictForIn'].local_value&&vm.php_js.ini['phpjs.strictForIn'].local_value!=='关闭';populateArr=strictForIn?输入数组:填充数组;//用排序后的键名重建数组for(i=0;i

最新推荐
猜你喜欢