@@ -234,10 +234,10 @@ export class NodeApi<N extends JsonNode = JsonNode> implements Printable {
234234 if ( typeof key === 'number' ) index = key ;
235235 else if ( key === '-' ) index = length ;
236236 else {
237- index = Math . trunc ( Number ( key ) ) ;
237+ index = ~ ~ key ;
238238 if ( index + '' !== key ) break ADD;
239239 }
240- if ( Number . isNaN ( index ) ) break ADD;
240+ if ( index !== index ) break ADD;
241241 if ( index < 0 ) index = 0 ;
242242 if ( index > length ) index = length ;
243243 if ( node instanceof ArrApi ) node . ins ( index , Array . isArray ( value ) ? value : [ value ] ) ;
@@ -247,7 +247,7 @@ export class NodeApi<N extends JsonNode = JsonNode> implements Printable {
247247 node . ins ( index , value ) ;
248248 }
249249 } else if ( node instanceof VecApi ) {
250- node . set ( [ [ Math . trunc ( Number ( key ) ) , value ] ] ) ;
250+ node . set ( [ [ ~ ~ key , value ] ] ) ;
251251 } else break ADD;
252252 return true ;
253253 } catch { }
@@ -267,13 +267,13 @@ export class NodeApi<N extends JsonNode = JsonNode> implements Printable {
267267 let index : number = 0 ;
268268 if ( typeof key === 'number' ) index = key ;
269269 else {
270- index = Math . trunc ( Number ( key ) ) ;
270+ index = ~ ~ key ;
271271 if ( index + '' !== key ) break REPLACE;
272272 }
273- if ( Number . isNaN ( index ) || index < 0 || index > length ) break REPLACE;
273+ if ( index !== index || index < 0 || index > length ) break REPLACE;
274274 if ( index === length ) node . ins ( index , [ value ] ) ;
275275 else node . upd ( index , value ) ;
276- } else if ( node instanceof VecApi ) node . set ( [ [ Math . trunc ( Number ( key ) ) , value ] ] ) ;
276+ } else if ( node instanceof VecApi ) node . set ( [ [ ~ ~ key , value ] ] ) ;
277277 else break REPLACE;
278278 return true ;
279279 } catch { }
@@ -294,13 +294,13 @@ export class NodeApi<N extends JsonNode = JsonNode> implements Printable {
294294 if ( typeof key === 'number' ) index = key ;
295295 else if ( key === '-' ) index = length ;
296296 else {
297- index = Math . trunc ( Number ( key ) ) ;
297+ index = ~ ~ key ;
298298 if ( index + '' !== key ) break REMOVE;
299299 }
300- if ( Number . isNaN ( index ) || index < 0 || index > len ) break REMOVE;
300+ if ( index !== index || index < 0 || index > len ) break REMOVE;
301301 node . del ( index , Math . min ( length , len - index ) ) ;
302302 } else if ( node instanceof VecApi ) {
303- node . set ( [ [ Math . trunc ( Number ( key ) ) , void 0 ] ] ) ;
303+ node . set ( [ [ ~ ~ key , void 0 ] ] ) ;
304304 } else break REMOVE;
305305 return true ;
306306 } catch { }
0 commit comments