仅对二维数组的第一维进行排序Google脚本

时间:2019-07-08 15:05:44

标签: arrays sorting google-apps-script

我正在尝试仅对二维数组的第一维进行排序

我有

arr = [a,b,c,a,b,c,a,b,c]

arr1 = arr.sort() --> arr1 = [a,a,a,b,b,b,c,c,c]

result = transpose([arr1,arr]) 

哪个给

result = [[[a],[a]],[[a],[a]],[[a],[a]],[[b],[b]],[[b],[b]],[[b],[b]],[[c],[c]],[[c],[c]],[[c],[c]]]

但是我需要(并且期望)

result = [[[a],[a]],[[a],[b]],[[a],[c]],[[b],[a]],[[b],[b]],[[b],[c]],[[c],[a]],[[c],[b]],[[c],[c]]]

谢谢

1 个答案:

答案 0 :(得分:2)

您需要对数组进行实际克隆,arr会按照您的工作进行排序。

尝试一下:

arr = [a,b,c,a,b,c,a,b,c]

arr1 = arr.slice(0);
arr1.sort();

result = transpose([arr1,arr]) 

我的测试受到限制,因为转置不是GAS函数,并且您没有包含它。

实际上,这似乎可行:

function transpose(a)
{
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}