编写背景及排序 规则
公司需要对游戏进行一系列的排序,在这里只说我自己遇到问题的哪一段
//规则:$plat数据要根据$sort里的sort为相应 可以输入一个数字,即为该平台;
解决思路:将$sort要固定单元先固定到$temp里面【占位置】,并将与$plat对应的单元删除
用for循环依次将$plat还剩的单元插入$temp不为空的位置【填补空缺】
php版
$plat = [ 0 => [ "code" => "9u", "order" => 101 ], 1 => [ "code" => "xm", "order" => 107 ], 2 => [ "code" => "gp", "order" => 115 ], 3 => [ "code" => "dl", "order" => 120 ], 4 => [ "code" => "baidu", "order" => 121 ], 5 => [ "code" => "ow", "order" => 117 ], 6 => [ "code" => "changxiang", "order" => 999 ], 7 => [ "code" => "360", "order" => 1000 ] ]; $sort = [ 0 => [ "code" => "ow", "sort" => 1 ], 1 => [ "code" => "dl", "sort" => 6 ], ]; function formate_sort($sort) { $temp = []; foreach ($sort as $k => $v) { $temp[$v['code']] = $v['sort']; } return $temp; } function plat_sort($plat, $formate_sort) { $temp = []; $cou = count($plat); foreach ($plat as $k => $v) { if(isset($formate_sort[$v['code']])) { $temp[$formate_sort[$v['code']]] = $v; unset($plat[$k]); } } for ($i=0; $i< $cou; $i++) { if(!isset($temp[$i])) { $temp[$i] = array_shift($plat); } } $keys = array_keys($temp); sort($keys); $sort_plat = []; foreach ($keys as $k=>$v) { $sort_plat[$k] = $temp[$k]; } return $sort_plat; } $formate_sort = formate_sort($sort); $plat_arr = plat_sort($plat, $formate_sort);
js版
// 数据 排序 function traverseSortTable( plugin_sort_table, sort_platform){ var temp_table = new Array(); var temp_sort = new Array(); var temp_platform = new Array(); var i = 0 //先进行简单的排序并获取 相应的值 $.each( plugin_sort_table, function( k, v ){ i++; temp_table.push({ 0 : i, 1 : v[1], 2 : v[2], 3:a_default( k, v ) }); }); //1、提取sort_platform里的code与sort生成 数组[baidu: 1, dl: 7] $.each( sort_platform, function( k, v ){ temp_sort[ v['code'] ] =v['sort']; }); // 2、将满足翻入相应位子temp_platform,删除temp_table与之对应的coder单元 var length = temp_table.length; var temp_temp_table = Array(); $.each(temp_table, function(k, v){ var temp = temp_sort[ v[2] ]; if (temp >= 0) { v[3] = a_cancle( temp, v ); temp_platform[temp] = v; } else { temp_temp_table.push(v); } }); temp_table = temp_temp_table; // 3、将temp_table的code且不存在与temp_platform依次插入temp_platform 进行从小到大排序 var index = 0; for (var i = 0; i < length; i++) { var temp = temp_platform[i]; // console.log(typeof temp); if (temp === undefined) { temp_platform[i] = temp_table[index]; index++; } } //4、对temp_platform // new_plugin_sort_table = $.unique( temp_platform ) ; new_plugin_sort_table = temp_platform; return false; }