php js 排序

 编写背景及排序 规则

  公司需要对游戏进行一系列的排序,在这里只说我自己遇到问题的哪一段

  //规则:$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;
}

 

posted @ 2017-01-04 16:25  IT树  阅读(162)  评论(0编辑  收藏  举报