JavaScript实现多维数组多键值排序方法

2016-02-19 17:12 35 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐JavaScript实现多维数组多键值排序方法,赶紧看过来吧!

【 tulaoshi.com - Web开发 】

  JavaScript的数组排序函数 sort方法,默认是按照ASCII 字符顺序进行升序排列。

  arrayobj.sort(sortfunction);

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  参数:sortFunction

  可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

  sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

  如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

  负值,如果所传递的第一个参数比第二个参数小。

  零,如果两个参数相等。

  正值,如果第一个参数比第二个参数大。

  以上的方法在一维的排序还是很方便的,但像SQL语句中的ORDER BY 一样的多键值排序由怎么做呢?

  多维数组的多键值排序,则需要复杂一些,但不需要用循环解决。实际解决的道理是一样的 。

  数字:

  以下的例子是将数字的多维数组按照第5列,第9列,第3列的顺序排序,像SQL语句中的ORDER BY col5,col9,col7。数字的时候可以直接两个项目相减,以结果作为返回值即可。

script language=javascript  var myArray = new Array();  for(var i=0;i10;i++ )...{    myArray[i]=new Array();    myArray[i][0]=Math.floor(Math.random()*10);        myArray[i][1]=Math.floor(Math.random()*10);    myArray[i][2]=Math.floor(Math.random()*10);    myArray[i][3]=Math.floor(Math.random()*10);    myArray[i][4]=Math.floor(Math.random()*10);    myArray[i][5]=Math.floor(Math.random()*10);    myArray[i][6]=Math.floor(Math.random()*10);    myArray[i][7]=Math.floor(Math.random()*10);    myArray[i][8]=Math.floor(Math.random()*10);  }    myArray.sort( function(x, y) ...{    return (x[0]==y[0])?((x[4]==y[4])?(x[8]-y[8]):(x[4]-y[4])):(x[2]-y[2])  });  for(var i=0;imyArray.length;i++ )...{    document.write(myArray[i].join(",") + "br/");  }/script

  字符:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  字符的时候sortFunction中的项目不能像数字一样直接相减,需要调用

  str1.localeCompare( str2 )方法来作比较,从而满足返回值。以下是多维数组的第1,2列作排序的情况。

function sortFunction(array) ...{  return array.sort( function(x, y) ...{  return (x[0]==y[0])?(x[1].localeCompare(y[1])):(x[0].localeCompare(y[0]))  });}

  因此arrayObject.sort( sortFunction )的排序功能还是很强大的,终于能够实现了SQL语句中的ORDER BY 一样的功能。

来源:http://www.tulaoshi.com/n/20160219/1614530.html

延伸阅读
标签: Web开发
数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1 定义数组 声明有10个元素的数组 var a = new Array(10); 此时为a已经开辟了内存空间,包含10个元素,用数组名称加 [下标] ...
标签: Web开发
JavaScript中splice函数方法是从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。 其中arrayObj必选项。一个 Array 对象。 start是必选项。指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。 deleteCount是必选项。要移除的元素的个数。 item1, item...
标签: Web开发
Javascript的字符串有个indexOf的方法,能够返回字符在指定的字符串中的位置,非常有用,本文介绍了如何给Javascript数组也添加一个类似的方法。 script type="text/javascript"//![CDATA[[].indexOf || (Array.prototype.indexOf = function(v){for(var i = this.length; i-- && this[i] !== v;);return i;});var b =...
标签: Web开发
这是一个很典型的一个background-position-x的应用。技术含量并不高,但是思想还是值得思考的,证明了DHTML方面有很多东西可以变通的。用背景用map,如果做得更复杂一些,用ajax动态的载入图片的背景,也是一个小型的map了。我不打算在此项深究,因为脚本的速度和效率是有瓶颈的。 预备知识: background-position-x ------------- ...
标签: Web开发
JavaScript中sort函数方法是返回一个元素已经进行了排序的 Array 对象。 使用方法: 其中arrayObj是必选项。任意 Array 对象。 sortFunction是可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。 JavaScript中sort函数方法将 Array 对象进行适当的排序;在...

经验教程

905

收藏

33
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部