【问题标题】:In an array of strings how to sort the array on part of the strings在字符串数组中如何对部分字符串的数组进行排序
【发布时间】:2012-06-13 14:15:08
【问题描述】:

我开始为此编写冒泡排序时,我想也许有一种方法可以使用带有 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 不同。我想对这 2 个字符进行排序。

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

【问题讨论】:

  • 每个字符串中的字符 17、19 和 20 不同。
  • 你说得对……但我想将列表中的“日期”部分分组……页码已经排序。谢谢你钉它;-)
  • 这不是 google-apps-script 问题...
  • @Edo,对不起,我的问题被标记为 javascript GAS,我不认为这真的是题外话,是吗?
  • 这没什么大不了的,但我不明白这个问题与 GAS 有什么关系......

标签: javascript google-apps-script


【解决方案1】:

使用带有函数的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;
});

【讨论】:

  • 天哪,真快!当我看到它时,我发现它很清晰;-) 谢谢
  • 我调整了这个以供我使用,虽然它适用于一个小数组(
【解决方案2】:

是的,您可以将一个函数传递给 array.sort,根据您感兴趣的任何标准比较两个字符串。请参阅How to sort array in javascript?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多