@@ -739,14 +739,14 @@ export default class BTree<K=any, V=any> implements ISortedMapF<K,V>, ISortedMap
739
739
* @param stepToNode If true, the cursor will be advanced to the next node (skipping values)
740
740
* @returns true if the step was completed and false if the step would have caused the cursor to move beyond the end of the tree.
741
741
*/
742
- private static step < K , V > ( cursor : DiffCursor < K , V > , stepToNode : boolean = false ) : boolean {
742
+ private static step < K , V > ( cursor : DiffCursor < K , V > , stepToNode ? : boolean ) : boolean {
743
743
const { internalSpine, levelIndices, leaf } = cursor ;
744
- if ( stepToNode || leaf ) {
744
+ if ( stepToNode === true || leaf ) {
745
745
const levelsLength = levelIndices . length ;
746
746
// Step to the next node only if:
747
747
// - We are explicitly directed to via stepToNode, or
748
748
// - There are no key/value pairs left to step to in this leaf
749
- if ( stepToNode || levelIndices [ levelsLength - 1 ] === 0 ) {
749
+ if ( stepToNode === true || levelIndices [ levelsLength - 1 ] === 0 ) {
750
750
const spineLength = internalSpine . length ;
751
751
// Root is leaf
752
752
if ( spineLength === 0 )
@@ -755,19 +755,17 @@ export default class BTree<K=any, V=any> implements ISortedMapF<K,V>, ISortedMap
755
755
const nodeLevelIndex = spineLength - 1 ;
756
756
let levelIndexWalkBack = nodeLevelIndex ;
757
757
while ( levelIndexWalkBack >= 0 ) {
758
- const childIndex = levelIndices [ levelIndexWalkBack ]
759
- if ( childIndex > 0 ) {
758
+ if ( levelIndices [ levelIndexWalkBack ] > 0 ) {
760
759
if ( levelIndexWalkBack < levelsLength - 1 ) {
761
760
// Remove leaf state from cursor
762
761
cursor . leaf = undefined ;
763
- levelIndices . splice ( levelIndexWalkBack + 1 , levelsLength - levelIndexWalkBack ) ;
762
+ levelIndices . pop ( ) ;
764
763
}
765
- // If we walked upwards past any internal node, splice them out
764
+ // If we walked upwards past any internal node, slice them out
766
765
if ( levelIndexWalkBack < nodeLevelIndex )
767
- internalSpine . splice ( levelIndexWalkBack + 1 , spineLength - levelIndexWalkBack ) ;
766
+ cursor . internalSpine = internalSpine . slice ( 0 , levelIndexWalkBack + 1 ) ;
768
767
// Move to new internal node
769
- const nodeIndex = -- levelIndices [ levelIndexWalkBack ] ;
770
- cursor . currentKey = internalSpine [ levelIndexWalkBack ] [ nodeIndex ] . maxKey ( ) ;
768
+ cursor . currentKey = internalSpine [ levelIndexWalkBack ] [ -- levelIndices [ levelIndexWalkBack ] ] . maxKey ( ) ;
771
769
return true ;
772
770
}
773
771
levelIndexWalkBack -- ;
0 commit comments