编写背景及排序 规则

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

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

php js 排序的更多相关文章

  1. 排序图解:js排序算法实现

    之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...

  2. 利用js排序html表格

    在web前端开发中会遇到排序等功能,当然也可以用服务器端来排序,今天我做一个笔记,怎么用js来实现这些复杂的功能呢. 在学习这个之前一定得用html dom jquery 的知识,要不没有办法看明白的 ...

  3. JS排序之快速排序

    JS排序之快速排序 一个数组中的数据,选择索引为(2/数组长度)的那个数据作为基数,数组中的其他数据与它对比,比它数值小的放在做数组,比它数值大的放在右数组,最后组合 左数组+基数+右数组,其中,左数 ...

  4. 总结下js排序算法和乱序算法

    其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...

  5. js排序算法汇总

    JS家的排序算法   十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外 ...

  6. JS排序算法

    1.冒泡排序 冒泡算法是比较相邻的两项,如果前者比后者大,就交换他们. 假设一共有n项,那么一共需要n-1趟,第一趟需要交换n-1次,但是第一趟结束后,最后一项基本确定就是最大项了,所以第二次需要交换 ...

  7. js 排序:sort()方法、冒泡排序、二分法排序。

    js中的排序,这里介绍三种,sort()方法.冒泡排序.二分法排序. 1.sort方法 写法:  数组.sort(); 返回排好序的数组,如果数组里是数字,则由小到大,如果是字符串,就按照第一个字符的 ...

  8. js排序与重组

    前几天同学发给我一个问题,思路想整理一下,也供大家参考.实际上这道题本质就是考察的是去重与排序的问题.好了闲话少说,上题. function input(req){     if(req<=10 ...

  9. 常用的 JS 排序算法整理

    关于排序算法的问题可以在网上搜到一大堆,但是纯 JS 版比较零散,之前面试的时候特意整理了一遍,附带排序效率比较. //1.冒泡排序 var bubbleSort = function(arr) { ...

随机推荐

  1. 一起学习KenDo Mobile之一 建立一个简单的移动APP

    开发KenDo Mobile的开发工具只要求支持文本编辑即可,当然我自己用VS2013,大材小用. 移动应用程序开发不同于桌面应用程序开发,前者需要在移动设备上部署,后者使用台式电脑测试和调试应用程序 ...

  2. Sprintf新解 (ZT)

     Sprintf新解 2012-08-06 11:26:45 分类: 原文地址:Sprintf新解 作者:harserm 由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已 ...

  3. JAVA新手笔记 Intent对象和Bundle对象

    Intent对象和Bundle对象 功能主要是在 MainActivity中定义了2个EditText,当用户输入内容,把他传入到第二个活动, 自己新创的活动中,MyActivity中 放在MainA ...

  4. JS定义函数的两种方式:函数声明和函数表达式

    函数声明 关于函数声明的方式,它的一个重要的特性就是函数声明提升(function declaration hoisting),意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它 ...

  5. JuqeryResize

    //添加 (function ($, h, c) { var a = $([]), e = $.resize = $.extend($.resize, {}), i, k = "setTim ...

  6. 安卓工程 Installation error:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED的解决办法

    解决办法:把包名首字母改成小写就好了.

  7. MongoDB学习笔记(索引)

    一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({" ...

  8. Mybtis框架总结(一)

    一:Mybaits下载并搭建核心框架 1:下载mybatis的jar包: 2:创建mybatis框架链接数据库的配置文件Configuration.xml,格式如下 <!DOCTYPE conf ...

  9. ARCGIS如何进行可视域分析

    可视域分析在不同的领域有着广泛的应用,如火灾监控点的设定,观察哨所的设定等等.军事领域是可视域分析技术应用最广的领域.例如为了设计巡航导弹的航线,就必须对发射点到目标的地形进行分析,包括地形特征优劣分 ...

  10. MySQL临时表创建

    和SQL SERVER 创建临时表不同 不能直接写 Create table #Test_Table 而是需要在 Create 和 table 之间 加入 TEMPORARY(temporary< ...