Сортировать только первое измерение двумерного массива Google Script - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь отсортировать только первое измерение двумерного массива

У меня есть

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 Ответ

2 голосов
/ 08 июля 2019

Вам нужно сделать фактический клон массива, arr сортируется в том, что вы делаете.

попробуйте это:

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

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

result = transpose([arr1,arr]) 

Мое тестирование ограничено, потому что transpose isn 't функция ГАЗА, и вы ее не включили.

На самом деле, похоже, это работает:

function transpose(a)
{
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...