添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
{name:"linc",age:28,num:1234}, {name:"linc",age:28,num:12345}, {name:"kiki",age:20,num:12345}, {name:"高峰",age:26,num:123}, {name:"高峰",age:27,num:101}, {name:"高峰",age:26,num:111}, {name:"安迪",age:29,num:110}, {name:"安迪",age:30,num:110} //两个字段一升一降排序 (function asc-desc(){ items.sort(function (a, b) { return SortByProps(a, b, { "name": "ascending", "age": "descending" }); console.log(items) })(); //两个字段都降序排序,其他排序方向同理,也可再加字段 (function desc(){ items.sort(function (a, b) { return SortByProps(a, b, { "name": "descending", "age": "descending" }); console.log(items) })(); //不定义排序方向和字段,默认都升序排列 (function default(){ items.sort(function (a, b) { return SortByProps(a, b); console.log(items) })(); //以下函数排序属性并未写死,可直接拿去用自定义属性 function SortByProps(item1, item2, obj) { var props = []; if(obj){ props.push(obj) var cps = []; // 存储排序属性比较结果。 // 如果未指定排序属性(即obj不存在),则按照全属性升序排序。 // 记录下两个排序项按照各个排序属性进行比较得到的结果 var asc = true; if (props.length < 1) { for (var p in item1) { if (item1[p] > item2[p]) { cps.push(1); break; // 大于时跳出循环。 } else if (item1[p] === item2[p]) { cps.push(0); } else { cps.push(-1); break; // 小于时跳出循环。 else { for (var i = 0; i < props.length; i++) { var prop = props[i]; for (var o in prop) { asc = prop[o] === "ascending"; if (item1[o] > item2[o]) { cps.push(asc ? 1 : -1); break; // 大于时跳出循环。 } else if (item1[o] === item2[o]) { cps.push(0); } else { cps.push(asc ? -1 : 1); break; // 小于时跳出循环。 // 根据各排序属性比较结果综合判断得出两个比较项的最终大小关系 for (var j = 0; j < cps.length; j++) { if (cps[j] === 1 || cps[j] === -1) { return cps[j]; return false;

学无止境,

欢迎大家关注公众号:

本文转载自:本文链接:https://blog.csdn.net/zsl_955200/article/details/78796531,转载目的仅限于自己学习!

赞( 5 )
转载请注明来源地址: 不再犹豫 » 【转载】js自定义多字段排序【收藏】