我正在尝试仅对二维数组的第一维进行排序
我有
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]]]
谢谢
答案 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]; }); });
}