Skip to content

Commit 1e80cdd

Browse files
committed
refactor[isTupleOf]: reduce the use of array slices
1 parent 4dac22d commit 1e80cdd

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

is/tuple_of.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,9 @@ export function isTupleOf<
126126
if (!isArray(x) || x.length < predTup.length) {
127127
return false;
128128
}
129-
const rest = x.slice(0, -predTup.length);
130-
const trail = x.slice(-predTup.length);
131-
return predTup.every((pred, i) => pred(trail[i])) && predRest(rest);
129+
const offset = x.length - predTup.length;
130+
return predTup.every((pred, i) => pred(x[offset + i])) &&
131+
predRest(x.slice(0, offset));
132132
},
133133
"isTupleOf",
134134
predRest,
@@ -154,8 +154,8 @@ export function isTupleOf<
154154
if (!isArray(x) || x.length < predTup.length) {
155155
return false;
156156
}
157-
const rest = x.slice(predTup.length);
158-
return predTup.every((pred, i) => pred(x[i])) && predRest(rest);
157+
return predTup.every((pred, i) => pred(x[i])) &&
158+
predRest(x.slice(predTup.length));
159159
},
160160
"isTupleOf",
161161
predTup,
@@ -169,11 +169,10 @@ export function isTupleOf<
169169
if (!isArray(x) || x.length < (predTup.length + predTrail.length)) {
170170
return false;
171171
}
172-
const rest = x.slice(predTup.length, -predTrail.length);
173-
const trail = x.slice(-predTrail.length);
172+
const offset = x.length - predTrail.length;
174173
return predTup.every((pred, i) => pred(x[i])) &&
175-
predTrail.every((pred, i) => pred(trail[i])) &&
176-
predRest(rest);
174+
predTrail.every((pred, i) => pred(x[offset + i])) &&
175+
predRest(x.slice(predTup.length, offset));
177176
},
178177
"isTupleOf",
179178
predTup,

0 commit comments

Comments
 (0)