問題
我有一個2d數組,它實際上是輸入到Google Sheet中的數據。它按用戶定義的邏輯進行排序。位置排序的2d數組
目標是在此表末尾輸入新行,然後按位置對其進行排序。
說「的位置」我的意思是「歐洲」變「美」之前,因爲用戶已經較早進入它。
下面是測試樣品陣列:
var data =
[
['Earth', 'Europe', 'Britain', 'London'],
['Earth', 'Europe', 'Britain', 'Manchester'],
['Earth', 'Europe', 'Britain', 'Liverpool'],
['Earth', 'Europe', 'France', 'Paris'],
['Earth', 'Europe', 'France', 'Lion'],
['Earth', 'Europe', 'Italy', 'Rome'],
['Earth', 'Europe', 'Italy', 'Milan'],
['Earth', 'Europe', 'Greece', 'Athenes'],
['Earth', 'Asia', 'China', 'Pekin'],
['Earth', 'Africa', 'Algeria', 'Algiers'],
['Earth', 'America', 'USA', 'Dallas'],
['Earth', 'America', 'USA', 'New York'],
['Earth', 'America', 'USA', 'Chicago'],
['Tatooine', 'Yulab', 'Putesh', 'ASU'],
['Tatooine', 'Yulab', 'Putesh', 'Niatirb'],
['Tatooine', 'Yulab', 'Zalip', 'Duantan'],
['Tatooine', 'Asia', 'Solo', 'Lion'],
['Tatooine', 'Asia', 'Solo', 'To'],
['Earth', 'America', 'USA', 'San Francisco'],
['Tatooine', 'Yulab', 'Koko', 'Traiwau'],
['Venus', 'Yoo', 'Van', 'Derzar'],
['Tatooine', 'Chendoo', 'org', 'Eccel']
];
,正確的結果數組是:
/*
[ [Earth, Europe, Britain, London],
[Earth, Europe, Britain, Manchester],
[Earth, Europe, Britain, Liverpool],
[Earth, Europe, France, Paris],
[Earth, Europe, France, Lion],
[Earth, Europe, Italy, Rome],
[Earth, Europe, Italy, Milan],
[Earth, Europe, Greece, Athenes],
[Earth, Asia, China, Pekin],
[Earth, Africa, Algeria, Algiers],
[Earth, America, USA, Dallas],
[Earth, America, USA, New York],
[Earth, America, USA, Chicago],
[Earth, America, USA, San Francisco],
[Tatooine, Yulab, Putesh, ASU],
[Tatooine, Yulab, Putesh, Niatirb],
[Tatooine, Yulab, Zalip, Duantan],
[Tatooine, Yulab, Koko, Traiwau],
[Tatooine, Asia, Solo, Lion],
[Tatooine, Asia, Solo, To],
[Tatooine, Chendoo, org, Eccel],
[Venus, Yoo, Van, Derzar]
]
*/
我想用一個腳本這一點。
我的解決方案
我做了我自己的腳本的版本,請在這裏看到:
https://github.com/Max-Makhrov/positional-sorting/blob/master/main.js
算法如何工作
算法找到組從第一次開始排:地球>歐洲>英國。然後它會嘗試在稍後的條目中爲這些組找到一個匹配項。
我也想過將更高的索引分配給更早的條目。
問題
的問題:是否有更好的方法:
- 更少的代碼來完成相同的任務
- 更普遍的方式來排序位置的陣列
- 需要足夠快的解決方案,因爲我將使用表單中的代碼,並且它有limits on script time。
@Luca,我編輯的問題,限制它,以確定適當的答案。你能重新打開它嗎?我已經得到了正確的答案,並希望我的問題對其他用戶有所幫助 –