在 appscript 中对 2d 数组与 1d 数组进行排序

问题描述 投票:0回答:1

我想在 appscript 中对 2d 数组与 1d 数组进行排序。

使得 2D 数组与 1D 数组的顺序相同。

有谷歌表格的链接:

一维数组
a
b
c
d
e
f
g
h
j
k
l
二维数组
b 156
f 68
a 507
c 22
d 430
e 555
g 689
k 62
l 395
209
j 745
h 37

我使用字母表作为示例,但在我的例子中不仅仅是字母,还有全名。

我尝试了另一个帖子名称的脚本:“在Javascript中按任意列表对对象数组进行排序”,但它不起作用,它只是返回我的二维数组而不对其进行排序。

我尝试的脚本:

const objects = spreadsheetApp.getActive().getSheetByName("feuille 2").getRange('A;B').getValues()
const order = spreadsheetApp.getActive().getSheetByName("feuille 1").getRange('A;A').getValues()


const orderIndex = {}
order.forEach((value, index) => orderIndex[value] = index);

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

// Log
console.log('orderIndex:', orderIndex);
console.log('objects:', objects);
arrays sorting google-apps-script multidimensional-array bubble-sort
1个回答
0
投票

order
是一个二维数组。无论大小如何,
getValues()
始终返回二维数组。
flat
将其十化为一维数组:

const order = spreadsheetApp.getActive().getSheetByName("feuille 1").getRange('A;A').getValues().flat()

二维数组中没有

id
属性。删除它:

objects.sort((a, b) => orderIndex[a] - orderIndex[b]);
© www.soinside.com 2019 - 2024. All rights reserved.