【问题标题】:Google Scripts 2D Array sorting by valueGoogle Scripts 2D 数组按值排序
【发布时间】:2019-06-08 21:00:09
【问题描述】:

我有一个要排序的二维数组。

通常使用以下结构访问数组:array[r][c]。

我想重新排序数组的值,以便每个 [r] 值按第 4 个 c 值排序。

在网上看,我看到了一些似乎适用于其他结构化数组的排序脚本,但我想知道我是否遗漏了一些愚蠢的东西。

数组的结构使得对于数组中的每个 'r' 值,都有一个值列表,具体取决于您输入的 'c' 值(例如:如果您执行 array[0][2]是第一个条目的地址,array[0][10] 是第一个条目的电话号码)。

我希望能够根据 c 值 4 和... 10 进行排序(例如)。 (理想情况下,我会按多列排序,例如先按姓氏排序,然后按名字排序——但我现在会满足于一种排序哈哈哈)

我不确定是否有任何默认排序函数对我有用,或者我是否需要编写手动排序函数(我希望我不必这样做,因为那样效率很低) .

感谢大家的指点

【问题讨论】:

  • 所提供的带有 compare 的排序函数都不起作用(这可能是我构造数组的方式,因为采用不同结构的相同数据),所以我最终编写了自己的排序:比较位置 x位置为 x+1 。如果 first 更大,则交换并从头开始比较。如果不是更大,则迭代 x,然后再次比较。我知道它不是最有效的,特别是因为它在每次更改/交换后从顶部检查所有内容,但它对我有用。

标签: javascript arrays sorting multidimensional-array google-apps-script


【解决方案1】:

您需要编写自己的比较函数。

片段:

const COLTOSORT = 2;
function compare(row1, row2) {
  return row1[COLTOSORT] < row2[COLTOSORT]
    ? -1
    : row1[COLTOSORT] > row2[COLTOSORT]
      ? 1
      : 0;
}
array.sort(compare);

参考资料:

【讨论】:

    猜你喜欢
    • 2013-03-14
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2021-05-18
    • 2011-12-24
    相关资源
    最近更新 更多