We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 777d62c commit 4ef4aa1Copy full SHA for 4ef4aa1
src/lualib/ArraySort.ts
@@ -1,7 +1,11 @@
1
declare namespace table {
2
- function sort<T>(arr: T[], compareFn?: (a: T, b: T) => number): void;
+ function sort<T>(arr: T[], compareFn?: (a: T, b: T) => boolean): void;
3
}
4
function __TS__ArraySort<T>(arr: T[], compareFn?: (a: T, b: T) => number): T[] {
5
- table.sort(arr, compareFn);
+ if (compareFn !== undefined) {
6
+ table.sort(arr, (a, b) => compareFn(a, b) < 0);
7
+ } else {
8
+ table.sort(arr);
9
+ }
10
return arr;
11
test/unit/lualib/lualib.spec.ts
@@ -352,6 +352,22 @@ export class LuaLibTests
352
// Assert
353
Expect(result).toBe(JSON.stringify(expected));
354
355
+
356
+ @TestCase("[4, 5, 3, 2, 1]", [1, 2, 3, 4, 5], "a - b")
357
+ @TestCase('["4", "5", "3", "2", "1"]', ["1", "2", "3", "4", "5"], "tonumber(a) - tonumber(b)")
358
+ @TestCase('["4", "5", "3", "2", "1"]', ["5", "4", "3", "2", "1"], "tonumber(b) - tonumber(a)")
359
+ @Test("array.sort with compare function")
360
+ public arraySortWithCompareFunction(array: string, expected: any, compare: string): void
361
+ {
362
+ const result = util.transpileAndExecute(
363
+ `let testArray = ${array};
364
+ testArray.sort((a, b) => ${compare});
365
+ return JSONStringify(testArray)`);
366
367
+ // Assert
368
+ Expect(result).toBe(JSON.stringify(expected));
369
370
371
@TestCase("true", "4", "5", 4)
372
@TestCase("false", "4", "5", 5)
373
@TestCase("3", "4", "5", 4)
0 commit comments