@@ -298,11 +298,11 @@ export function isEqual<T, U=T>(x: T[], y: T[], fc: CompareFunction<T|U> | null=
298
298
* Get zero-based index for element in array.
299
299
* @param x an array
300
300
* @param i index (-ve: from right)
301
- * @returns i' | x[i'] = x[i]; i' ∈ [0, |x|)
301
+ * @returns i' | x[i'] = x[i]; i' ∈ [0, |x|]
302
302
*/
303
303
export function index < T > ( x : T [ ] , i : number ) : number {
304
304
var X = x . length ;
305
- return i >= 0 ? Math . min ( i , X - 1 ) : Math . max ( X + i , 0 ) ;
305
+ return i >= 0 ? Math . min ( i , X ) : Math . max ( X + i , 0 ) ;
306
306
}
307
307
308
308
@@ -311,12 +311,12 @@ export function index<T>(x: T[], i: number): number {
311
311
* @param x an array
312
312
* @param i start index (-ve: from right) [0]
313
313
* @param I end index (-ve: from right) [|x|]
314
- * @returns [i', I'] | i' ≤ I'; i', I' ∈ [0, |x|)
314
+ * @returns [i', I'] | i' ≤ I'; i', I' ∈ [0, |x|]
315
315
*/
316
316
export function indexRange < T > ( x : T [ ] , i : number = 0 , I : number = x . length ) : [ number , number ] {
317
317
var X = x . length ;
318
- var i = i >= 0 ? Math . min ( i , X - 1 ) : Math . max ( X + i , 0 ) ;
319
- var I = I >= 0 ? Math . min ( I , X - 1 ) : Math . max ( X + I , 0 ) ;
318
+ var i = i >= 0 ? Math . min ( i , X ) : Math . max ( X + i , 0 ) ;
319
+ var I = I >= 0 ? Math . min ( I , X ) : Math . max ( X + I , 0 ) ;
320
320
return [ i , Math . max ( i , I ) ] ;
321
321
}
322
322
@@ -783,7 +783,7 @@ export function dropRight<T>(x: T[], n: number=1): T[] {
783
783
* @returns x[T..] | ft(x[i]) = true ∀ i ∈ [0, T-1] & ft(x[T]) = false
784
784
*/
785
785
export function dropWhile < T > ( x : T [ ] , ft : TestFunction < T > ) : T [ ] {
786
- return x . slice ( scanUntil ( x , ft ) ) ;
786
+ return x . slice ( scanWhile ( x , ft ) ) ;
787
787
}
788
788
789
789
@@ -794,7 +794,7 @@ export function dropWhile<T>(x: T[], ft: TestFunction<T>): T[] {
794
794
* @returns x[0..T-1] | ft(x[i]) = true ∀ i ∈ [T, |x|-1] & ft(x[T-1]) = false
795
795
*/
796
796
export function dropWhileRight < T > ( x : T [ ] , ft : TestFunction < T > ) : T [ ] {
797
- return x . slice ( 0 , scanUntilRight ( x , ft ) ) ;
797
+ return x . slice ( 0 , scanWhileRight ( x , ft ) ) ;
798
798
}
799
799
800
800
@@ -1518,28 +1518,28 @@ export function reduceRight<T, U=T>(x: T[], fr: ReduceFunction<T, T|U>, acc?: T|
1518
1518
1519
1519
/**
1520
1520
* Keep values which pass a test.
1521
- * @param x an array (updated)
1521
+ * @param x an array
1522
1522
* @param ft test function (v, i, x)
1523
- * @returns x = [v₀, v₁, ...] | ft(vᵢ) = true; vᵢ ∈ x
1523
+ * @returns [v₀, v₁, ...] | ft(vᵢ) = true; vᵢ ∈ x
1524
1524
*/
1525
- export function filter$ < T > ( x : T [ ] , ft : TestFunction < T > ) : T [ ] {
1526
- for ( var i = 0 , j = 0 , I = x . length ; i < I ; ++ i )
1527
- if ( ft ( x [ i ] , i , x ) ) x [ j ++ ] = x [ i ] ;
1528
- x . length = j ;
1529
- return x ;
1525
+ export function filter < T > ( x : T [ ] , ft : TestFunction < T > ) : T [ ] {
1526
+ return x . filter ( ft ) ;
1530
1527
}
1528
+ export { filter as findAll } ;
1531
1529
1532
1530
1533
1531
/**
1534
1532
* Keep values which pass a test.
1535
- * @param x an array
1533
+ * @param x an array (updated)
1536
1534
* @param ft test function (v, i, x)
1537
- * @returns [v₀, v₁, ...] | ft(vᵢ) = true; vᵢ ∈ x
1535
+ * @returns x = [v₀, v₁, ...] | ft(vᵢ) = true; vᵢ ∈ x
1538
1536
*/
1539
- export function filter < T > ( x : T [ ] , ft : TestFunction < T > ) : T [ ] {
1540
- return x . filter ( ft ) ;
1537
+ export function filter$ < T > ( x : T [ ] , ft : TestFunction < T > ) : T [ ] {
1538
+ for ( var i = 0 , j = 0 , I = x . length ; i < I ; ++ i )
1539
+ if ( ft ( x [ i ] , i , x ) ) x [ j ++ ] = x [ i ] ;
1540
+ x . length = j ;
1541
+ return x ;
1541
1542
}
1542
- export { filter as findAll } ;
1543
1543
1544
1544
1545
1545
/**
@@ -1556,20 +1556,6 @@ export function filterAt<T>(x: T[], is: number[]): T[] {
1556
1556
}
1557
1557
1558
1558
1559
- /**
1560
- * Discard values which pass a test.
1561
- * @param x an array (updated)
1562
- * @param ft test function (v, i, x)
1563
- * @returns x = [v₀, v₁, ...] | ft(vᵢ) = false; vᵢ ∈ x
1564
- */
1565
- export function reject$ < T > ( x : T [ ] , ft : TestFunction < T > ) : T [ ] {
1566
- for ( var i = 0 , j = 0 , I = x . length ; i < I ; ++ i )
1567
- if ( ! ft ( x [ i ] , i , x ) ) x [ j ++ ] = x [ i ] ;
1568
- x . length = j ;
1569
- return x ;
1570
- }
1571
-
1572
-
1573
1559
/**
1574
1560
* Discard values which pass a test.
1575
1561
* @param x an array
@@ -1584,6 +1570,20 @@ export function reject<T>(x: T[], ft: TestFunction<T>): T[] {
1584
1570
}
1585
1571
1586
1572
1573
+ /**
1574
+ * Discard values which pass a test.
1575
+ * @param x an array (updated)
1576
+ * @param ft test function (v, i, x)
1577
+ * @returns x = [v₀, v₁, ...] | ft(vᵢ) = false; vᵢ ∈ x
1578
+ */
1579
+ export function reject$ < T > ( x : T [ ] , ft : TestFunction < T > ) : T [ ] {
1580
+ for ( var i = 0 , j = 0 , I = x . length ; i < I ; ++ i )
1581
+ if ( ! ft ( x [ i ] , i , x ) ) x [ j ++ ] = x [ i ] ;
1582
+ x . length = j ;
1583
+ return x ;
1584
+ }
1585
+
1586
+
1587
1587
/**
1588
1588
* Discard values at given indices.
1589
1589
* @param x an array
0 commit comments