5

当我想也许有一种方法可以使用带有 array.sort() 的函数来完成这项工作时,我开始为此编写冒泡排序?

这是我必须排序的(希望)清晰的示例:(文件名列表)

var array = ['impression_page_1_12_juin','impression_page_1_13_juin','impression_page_2_12_juin','impression_page_2_13_juin']

如您所见,在 2 个不同的日期有 2 个“page1”,每个字符串中只有字符 19 和 20 不同。我想对这两个字符进行排序。

Javascript 可以直接做到这一点,还是我应该返回我的子字符串和冒泡排序方法?

4

2 回答 2

14

使用sort带有函数的方法进行比较:

array.sort(function(x,y){
  var xp = x.substr(18, 2);
  var yp = y.substr(18, 2);
  return xp == yp ? 0 : xp < yp ? -1 : 1;
});
于 2012-06-13T14:23:14.973 回答
3

是的,您可以将一个函数传递给 array.sort,该函数根据您感兴趣的任何标准比较两个字符串。请参阅如何在 javascript 中对数组进行排序?

你必须小心字符串与数字:例如'1_12' < '1_2'is True。如果您需要将它们作为数字进行比较,您可以拆分字符串,对每个部分执行 parseInt,并实现成对比较。

于 2012-06-13T14:20:22.810 回答