Как сортировать 2D массив в базе сценария приложений (лист Google) на 1D массивеJavascript

Форум по Javascript
Ответить
Anonymous
 Как сортировать 2D массив в базе сценария приложений (лист Google) на 1D массиве

Сообщение Anonymous »

У меня есть сценарий, который я использовал в течение некоторого времени, но недавно у меня была ошибка в сортировке данных, и с тех пор я не смог решить проблему. В зависимости от раунда отсутствуют значения. Я добавляю пропущенные имена со значением «», а затем отсортируют их, чтобы я мог вставить данные в базу данных. But for a few days now, the sorting part hasn't been working properly.
  • First row: Data name
  • Second row: Data value
  • Third row: Data name in the desired order


name: < /th>
< /th>
b < /th>
e < /th>
d < /th>
< /th> < /tr> < /tr> < /th> < /tr> < /th> < /tr> < /th> < /tr> < /th> < /tr> < /th> < /th> < /th> < /th> < /th> < /th> < /th> < /th> < /th> />

значение: < /td>
10 < /td>
2 < /td>
35 < /td>
4 < /td>
12
< /td>
12

/>order :
A
B
C
D
E



the result it did before, with empty name at the end:



name :
A
B
C
d < /th>
e < /th>
"" < /th>
< /tr>
< /thead>


: < /td>
10 < /td>
/> 12 < /td>
4 < /td>
35 < /td>
"" < /td>
< /tr>
< /tbody>
< /table> < /div>
. class = "s-table-container">


name: < /th>
a < /th>
d < /th>
c < /th>
< /th> < /th> < /th> < /th> < /th> < /th> < /th> < /th> < /th> < /th> /> e < /th>
< /tr>
< /thead>


значение: < /td>
10 < /td>
4 < /td>
12
< /td>
12

/> 2 < /td>
35 < /td>
< /tr>
< /tbody>
< /table> < /div>
data:
https://docs.google.com/spreadsheets/d/ ... drive_link> function test() {
var objects = spreadsheet.getSheetByName("Feuille 121").getRange("A1:GG2").getValues()
var order = spreadsheet.getSheetByName("Feuille 121").getRange("A3:GG3").getValues().flat()

objects = Object.keys(objects[0]).map(function(c) {
return objects.map(function(r) {
return r[c];
});
});
order = Object.keys(order[0]).map(function(c) {
return order.map(function(r) {
return r[c];
});
});

// organise dans l'ordre des paramètre
let orderIndex = {}
order.forEach((value, index) => orderIndex[value] = index);

// Sort
objects.sort((a, b) => orderIndex[a[0]] - orderIndex[b[0]]);

var length = objects.length

objects = Object.keys(objects[0]).map(function(c) {
return objects.map(function(r) {
return r[c];
});
});
console.log(objects)
spreadsheet.getSheetByName("Feuille 121").getRange(1, 1, 2, length).setValues(objects)

}


Подробнее здесь: https://stackoverflow.com/questions/795 ... a-1d-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»