Я использую скрипт приложения на листе Google, и я добавил библиотеку lodash.У меня есть следующий код:
var sheet = SpreadsheetApp.openById(id).getSheetByName('mysheet');
var my_rows = sheet2Json(sheet) // USE THIS RATHER THAN OTHERS - BETTER JSON PRODUCED
var data = _.sortBy(my_rows, 'Index');
где:
function sheet2Json(sheet) {
var HeaderRow = sheet.getFrozenRows(); // THIS SHOULD GET HEADER ROW
var titleColumns = sheet.getDataRange().offset(HeaderRow-1, 0, 1).getValues()[0];
var lastRow = sheet.getLastRow();
var rowValues = [];
var colStartIndex = 1;
var rowNum = 1;
// var range = sheet.getRange(rowIndex, colStartIndex, rowNum, sheet.getLastColumn());
var range = sheet.getRange(HeaderRow, 1, sheet.getLastRow(), sheet.getLastColumn());
var rowValues = range.getValues();
var jsonArray = [];
for(var i=0; i<rowValues.length; i++) {
var line = rowValues[i];
var json = new Object();
for(var j=0; j<titleColumns.length; j++) {
json[titleColumns[j]] = line[j];
}
json['relativeRow'] = i; //DATA AFTER HEADER ROW
jsonArray.push(json);
}
return jsonArray;
}
Функция sheet2Json создает массив объектов с одним объектом на строку.Я хочу отсортировать строки по номеру индекса.Если я отформатирую столбец «Индекс» в текст, это работаетОднако, если я отформатирую столбец в числовом формате (который мне нужен для правильной сортировки), я получу:
Comparison method violates its general contract. (line 953, file "logashgs", project "LodashGS")
Как заставить функцию sortby работать для ключа, содержащего числа?
edit: пример my_rows:
[{relativeRow=11.0, Index=2115.0, Email= dfgdfg@dsfsd.com , completed=, Name= dfdsf dsfdsfdsf , last_contacted=INVALIDNUM, date_time=Thu Dec 06 00:30:16 GMT-05:00 2018, campaign=, Phone Number=1},{..},..]
edit2:
https://github.com/lodash/lodash/blob/3ac4b261e4a920a07673d49edfb84bd317f449f7/dist/lodash.js