/** * @author wsf 数据分组,排序js */ ; (function(win, $) { var _jsUtils = null; if(jsUtils) _jsUtils = new jsUtils();//js工具对象 //分组排序对象 function groupSorter() { //数据 this.data = null; //排序方式 this.sortType = [ 'asc', 'desc' ]; //默认排序方法 this.defaultsortType = this.sortType[0]; //排序名称 this.sorteName = null; //分组名称 this.groupName = null; } //原型对象 groupSorter.prototype = { //构造函数 constructor : groupSorter, //所有操作前的数据检测 dataCheck : function() { var _isAry = _jsUtils.isArray(this.data);//是否是数组 var _isJSON = _jsUtils.isJSON(this.data[0]);//是否是json数组 if (_isAry) { this.isAry = true; } else if (_isJSON) { this.isJSONAry = true; } else { throw new Error("数据有误!"); } this.checked = true//已经做过数据检查 }, //线性查找 lineSearch : function(key, val) { var i = this.data.length - 1; do { var _a = val?this.data[i--][val]:this.data[i--]; var _b = val?this.data[key]:key; if (_a === _b) return i + 1; } while (i >= 0); return -1; }, //二分查找 (必须为有序可比较数组) binarySearch : function(key, val) { var low = 0, high = this.data.length - 1; do { var mid = Math.floor((low + high) / 2); var mdata = val?this.data[mid][val]:this.data[mid]+""; key = val:this.data[key]:key+""; //向下取整数 if (key === mdata) return val?this.data[mid]:mid; if (key.localeCompare(mdata) < 0) high = mid - 1; else low = mid + 1; } while (low <= high); return -1; }, //原生js排序 systemSorter:function (sortName){ this.data.sort(function (a,b){ var _a = sortName?a[sortName]:a+""; var _b = sortName?b[sortName]:b+""; var _f = this.sortType == "asc"?_a.localeCompare(_b):_b.localeCompare(_a); return _f; }); }, //冒泡排序(数据量小的时候用【数据量大时效率差】) bubbleSorter:function (sortName){ var i = 0,arry = this.data,len = arry.length,j,d; for(;i<len;i++){ for(j=0;j<len;j++){ var d1 = sortName?array[i][sortName]:arry[i]+""; var d2 = sortName?array[j][sortName]:arry[j]+""; var _ret = this.sortType == "asc" ? d1.localeCompare(d2)<0:d1.localeCompare(d2)>0; if(_ret){ d = arry[i]; arry[j] = arry[i]; arry[i] = d; } } } }, //快速排序(效率最好) quickSort:function (sortName){ var i = 0,arry = this.data,j=arry.length-1 //排序实现 var sorter = function (i,j){ if(i==j){ return; } var key = sortName?array[i][sortName]:arry[i]; var stepi = i;//记录开始位置 var stepj = j//记录结束位置 while(j>i){ var d1 = sortName?array[j][sortName]:arry[j]+""; key = key+""; if(d1.localeCompare(key)>=0){ j--; }else{ arry[i] = arry[j]; while(j>i++){ if(d1.localeCompare(key)>0){ arry[j] = arry[i]; break; } } } } //如果第一个取出的key是最小数 if(stepi == i){ soter(++i,stepj); return; } //最后一个空位留给key arry[i] = key; sorter(stepi,i); sorter(j,stepj); } sorter(i,j); } } win.groupSorter = groupSorter;//外部调用入口 /** * 调用方式 * var _sorter = new groupSorter(); * _sorter.data = yourData; * _sorter.quickSort(sortName); */ })(window,jQuery);
相关推荐
主要介绍了js实现json数组分组合并操作,涉及javascript针对json数组的遍历、判断、添加、赋值等相关操作技巧,需要的朋友可以参考下
javascript读取json数组生成滚动分页 javascript读取json数组生成滚动分页 javascript读取json数组生成滚动分页
JavaScript应用实例-随机打乱数组顺序.js
json-to-pivot-json 将JSON数组转换为Pivot JSON数组有很多库可以接受JSON数组,而很少有需要汇总的配置,例如“数据透视行”,“数据透视列”和“值”字段。 但是所有这些模块的输出都是带有辅助函数的JSON对象。 ...
JavaScript视频教程-5.数组和对象(1)
两个json数组合并去重,以及删除某一项元素 let ha = [ {id:'H',name:'3'}, {id:'A',name:'6'}, {id:'B',name:'14'}, ...// 合并两个json数组,并去重; ha= Object.assign([], ha, hb); console.log('ha
节点红色贡献-json 一个强大的节点,用于处理 JSON 对象。 安装 从您的node-red目录: npm install node-red-contrib-json 注意: jq引擎需要能够找到并运行jq命令行程序。 有关安装说明,请参阅。 用法 创建一个...
主要介绍了JavaScript对JSON数组简单排序操作,结合实例形式分析了javascript使用sort()方法针对json数组元素排序的相关操作技巧与注意事项,需要的朋友可以参考下
json数组转化为list_Python⼊门进阶教程-JSON操作 「关注我,和我⼀起放下灵魂,让灵魂去搬砖。」 Python JSON操作 操作 Python版本3.8.0,开发⼯具:Pycharm 什么是JSON? 什么是JSON? JSON 的全称是 JavaScript ...
table添加记录,由于name相同,form直接获取存在问题,所以将Table中的每条重复元素转为json数组在传给后台。
不可变-json 将 JSON 解析为 immutable.js 集合 IJSON.parse是解析器的集合,每个解析器都以不同的方式解释 JSON 数组和对象: IJSON.parse.ListMap - 将 JSON 数组视为不可变列表,将对象视为地图。 IJSON.parse...
1、allowedFileTypes 、allowedFileExtensions 为什么没有效果?...2、全部使用“data-”来赋值又会发现javascript认为值是字符串不是json数组,不能用join方法,还是要改一下fileinput.js转一下。
主要介绍了JS实现给json数组动态赋值的方法,结合实例形式分析了javascript针对json数组的遍历、赋值等常用操作技巧,需要的朋友可以参考下
javascript中实现对象数组的排序功能 只要数组中的对象存在多个属性,即可传入sql语句排序形式的参数,加以排序,如传入'col1 desc,col2 asc' 就可以实现对数组中对象通过col1倒序排列,如果col1值相同,则通过col2排序,...
本文实例讲述了JS实现json数组排序操作。分享给大家供大家参考,具体如下: 有时需要根据json对象的某个属性排序json数组,javascript端有sort这个函数,具体可以参考:...
JavaScript 中可以使用 `splice()` 方法来删除数组中的指定元素。 `splice()` 方法接受两个参数:要删除的元素的索引和要删除的元素的个数。如果要删除的元素只有一个,可以将第二个参数设为 `1`。 例如,如果要...
今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下: 1.json类型的字符串转换为json对象及取值 var jsonString = '{"bar":"property","baz":3}'; var jsObject = JSON.parse(jsonString); //...
JavaScript应用实例-数组映射排序.js
《基于JavaScript的JSON数组的购物车项目》——虽然只是一个简单的购物车项目,但它综合运用了HTML、CSS、Json.JavaScript等相关的知识,特别适合刚刚入门前端的小伙伴进行学习和借鉴,可以帮助小伙伴们将前端开发的...