2013-04-15 3 views
1

Мой скрипт иногда работает и иногда с ошибками. Запуск отладки показывает, что проблема с array.sort может быть проблемой. Это ошибка:GAS Сортировка многомерного массива по дате

We're sorry, a server error occurred. Please wait a bit and try again.

Если бы это была проблема, я не уверен, почему она будет работать иногда, а не другие.

allData.sort(function(a,b){ 
    a = new Date(a[7]); 
    b = new Date(b[7]); 
    return a>b?-1:a<b?1:0; 
}); 

Есть ли что-то не так с этим? 7-е место моего массива содержит дату, и я хочу отсортировать ее.

+0

Это ошибка: К сожалению, произошла ошибка сервера. Подождите немного и повторите попытку. – user1786546

+0

Если это ошибка, которую вы видите в отладчике, (а) это не ваш код, который виноват, это, скорее всего, проблема синхронизации кеша на серверах Google и (б) это может быть или не быть тем же самым, что вызывает проблемы в «нормальных» пробегах. Вы получаете ту же ошибку в уведомлениях, отправленных вам по почте, когда ваш скрипт выходит за пределы отладчика? – Mogsdad

+0

У меня нет триггера электронной почты, но я могу настроить его и отчитаться. – user1786546

ответ

0

По какой-то причине, ГАЗ, кажется, как это лучше:

allData.sort(function(a,b){return((a[7]<b[7])?-1:((a[7]>b[7])?1:0))}); 
    Logger.log(allData) 
allData.reverse() 

Теперь она работает. Не знаю, почему, но это решение.

+0

У меня вопрос (настоящий!). Будет ли результат, созданный лучшим кодом, отличаться от результата, полученного следующим образом: 'allData.sort (function (a, b) {return a [7] - b [7]});'. Я получил это из [этой ссылки] (http://www.sitepoint.com/sophisticated-sorting-in-javascript/) –

+0

Дэвид, это зависит от сортируемых данных. ваша версия работает только для числовых значений, а другая также анализирует строки и объекты даты. – Jonathon

0

Я считаю, что вам нужно изолировать своих тернарных операторов.

return a>b?-1:(a<b?1:0); 
+0

Эти запятые улучшают читаемость, но не требуются. Вы должны быть осторожны в отношении [приоритета оператора] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence), но в этом примере это не проблема. – Mogsdad

+0

Спасибо @Mogsdad, вы улучшили мое понимание, снова! – ScampMichael

+0

Я много лет учился у вас, поэтому я обязан вам. – Mogsdad

Смежные вопросы