如何根据其中一个内容对数组进行排序

时间:2011-03-18 11:53:50

标签: javascript jquery html

我有一个包含文本和HTML的数组。 myarray [1]包含以下内容.. myarray [2]包含相同的东西,只是不同名称'john'等等

153); color: white; cursor: pointer; font-size: 12px; font-weight: normal; font-family:
 Arial;" onmouseover="this.style.backgroundColor = 'white';  this.style.color='#336699'"
 onmouseout="this.style.backgroundColor = ''; this.style.color = 'white'; " 
onclick="if(top.mail.checkDataset()) mail.execFunction('javascript: changeMain(\'orderCreate1.do\')')">

<img alt="" src="images/round-white-bullet.gif" height="10" width="10"> John<br>

我如何对整个数组进行排序,以便在这种情况下忽略所有内容并按名称“john”排序?名称总是在图像之后和br之前,如果有帮助

2 个答案:

答案 0 :(得分:2)

我使用了underscore.js中的sortBy()函数对数组进行排序,它对我来说很有用:http://documentcloud.github.com/underscore/#sortBy

如果Matthias Benkard的回答无法解决您的问题,请查看underscore.js

答案 1 :(得分:1)

问题陈述有点模糊,但一般情况下,您可以使用一些函数对数组进行排序,该函数提取要排序的键(我将在此处调用此函数key)使用类似于以下内容:

array.sort(function(x, y) {
  var x_key = key(x);
  var y_key = key(y);
  return (x_key < y_key ? -1 : x_key === y_key ? 0 : 1);
});

在您的情况下,key必须是从数组元素中提取名称的函数。

如果你的数组元素是字符串,你可能想尝试正则表达式:

var key = function(x) {
  return /<img[^>]*>([^<]*)<br>/.exec(x)[1];
};