编写背景及排序 规则

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

 //规则:$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. sencha touch+phonegap+node.js打包

    这讲我们来讲解下如何使用phonegapa创建项目环境并通过她们将sencha touch打包成app,这里我们只讲解打包android的apk,打包ios的过程有点类似,但是需要在mac环境下,最后 ...

  2. 修复HTTP 503错误

    要解决此问题,按照下列步骤操作: 1.验证是否已为虚拟服务器配置了应用程序池.默认的应用程序池是MSSharePointPortalAppPool. 请按照下列步骤来确定虚拟服务器正在使用的应用程序池 ...

  3. (Hibernate进阶)Hibernate映射——一对一单向关联映射(五)

    映射原理 两个实体对象之间是一对一的关联映射,即一个对象只能与另外唯一的一个对象相对应.例如:一个人(Person)只有一张身份证(IdCard).我们看一下这个例子的对象模型,如下图所示: 对象模型 ...

  4. HTTP 错误500.19 -Internal Server Error 错误代码 0x80070021

    转自:http://blog.csdn.net/goux_s/article/details/5676689 错误摘要 HTTP 错误500.19 -Internal Server Error 无法访 ...

  5. IS A 和 HAS A的区别

    IS A:一般是用作继承或者接口类.比如:中国人和外国人都是人,重点在:是一个... . HAS A:一般用作对象和他的成员的从属关系.比如:中国人和外国人都有眼睛.耳朵.嘴巴.重点在:有一个... ...

  6. JAVA EE中session的理解

    转自[互动百科]http://www.baike.com/wiki/Session   Session Session:在计算机中,尤其是在网络应用中,称为“会话”.Session直接翻译成中文比较困 ...

  7. html5+css 图片自适应

    <div style="position:absolute; width:100%; height:100%; z-index:-1; left:0; top:0;"> ...

  8. Hibernate一对一外键双向关联(Annotation配置)

    如上图所示:一个学生有一个学生证号,一个学生证号对应一名学生.在Hibernate中怎么用Annotation来实现呢? 学生类,主键是id:学生证的主键也是Id: Student.java pack ...

  9. Python安装mysql-python错误提示python setup.py egg_info

    做python项目,需要用到mysql,一般用python-mysql,安装时遇到错误提示如下: Command "python setup.py egg_info" failed ...

  10. Could not find the following Boost libraries: boost_python3

    安装Boost.NumPy时报错: CMake Error at /usr/share/cmake/Modules/FindBoost.cmake:1794 (message): Unable to ...