Skip to content

Commit b40178a

Browse files
committed
IndexOf and Splice (both broken)
1 parent cd40c3b commit b40178a

File tree

2 files changed

+39
-5
lines changed

2 files changed

+39
-5
lines changed

src/lualib/ArrayIndexOf.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
function __TS__ArrayIndexOf<T>(arr: T[], searchElement: T, fromIndex?: number) {
2+
const len = arr.length;
3+
if (len === 0) {
4+
return -1;
5+
}
6+
7+
let n = 0;
8+
if (fromIndex) {
9+
n = fromIndex;
10+
}
11+
12+
if (n >= len) {
13+
return -1;
14+
}
15+
16+
let k;
17+
if (n >= 0) {
18+
k = 0;
19+
} else {
20+
k = len + n;
21+
if (k < 0) {
22+
k = 0;
23+
}
24+
}
25+
26+
for (let i = k; i < len; i++) {
27+
if (arr[i] === searchElement) {
28+
return i;
29+
}
30+
}
31+
32+
return -1;
33+
}

src/lualib/ArraySplice.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ function __TS__ArraySplice<T>(list: T[], start: number, deleteCount: number, ...
5757
}
5858
// c. d.
5959
for (let k = len; k > len - actualDeleteCount + itemCount; k--) {
60-
list[k] = undefined;
60+
list[k - 1] = undefined;
6161
}
6262
// 16.
6363
} else if (itemCount > actualDeleteCount) {
@@ -77,13 +77,14 @@ function __TS__ArraySplice<T>(list: T[], start: number, deleteCount: number, ...
7777

7878
// 17.
7979
// 18.
80-
for (let k = actualStart; k < items.length; k++) {
81-
const e = items[k];
82-
list[k] = e;
80+
let j = actualStart;
81+
for (const e of items) {
82+
list[j] = e;
83+
j++;
8384
}
8485

8586
// 19.
86-
for (let k = list.length; k > len - actualDeleteCount + itemCount; k--) {
87+
for (let k = list.length - 1; k > len - actualDeleteCount + itemCount; k--) {
8788
list[k] = undefined;
8889
}
8990

0 commit comments

Comments
 (0)