@@ -500,91 +500,93 @@ Array.from = $A;
500
500
} ;
501
501
}
502
502
503
+ function map ( iterator ) {
504
+ iterator = iterator || Prototype . K ;
505
+ var results = [ ] , context = arguments [ 1 ] , n = 0 ;
506
+
507
+ for ( var i = 0 , length = this . length ; i < length ; i ++ ) {
508
+ if ( i in this ) {
509
+ results [ n ] = iterator . call ( context , this [ i ] , i , this ) ;
510
+ }
511
+ n ++ ;
512
+ }
513
+ results . length = n ;
514
+ return results ;
515
+ }
516
+
503
517
if ( arrayProto . map ) {
504
- var map = wrapNative ( Array . prototype . map ) ;
505
- } else {
506
- function map ( iterator ) {
507
- iterator = iterator || Prototype . K ;
508
- var results = [ ] , context = arguments [ 1 ] , n = 0 ;
509
-
510
- for ( var i = 0 , length = this . length ; i < length ; i ++ ) {
511
- if ( i in this ) {
512
- results [ n ] = iterator . call ( context , this [ i ] , i , this ) ;
518
+ map = wrapNative ( Array . prototype . map ) ;
519
+ }
520
+
521
+ function filter ( iterator ) {
522
+ if ( ! Object . isFunction ( iterator ) )
523
+ throw new TypeError ( ) ;
524
+ var results = [ ] , context = arguments [ 1 ] , value ;
525
+
526
+ for ( var i = 0 , length = this . length ; i < length ; i ++ ) {
527
+ if ( i in this ) {
528
+ value = this [ i ] ;
529
+ if ( iterator . call ( context , value , i , this ) ) {
530
+ results . push ( value ) ;
513
531
}
514
- n ++ ;
515
532
}
516
- results . length = n ;
517
- return results ;
518
533
}
534
+ return results ;
519
535
}
520
-
536
+
521
537
if ( arrayProto . filter ) {
522
538
// `Array#filter` requires an iterator by nature, so we don't need to
523
539
// wrap it.
524
- var filter = Array . prototype . filter ;
525
- } else {
526
- function filter ( iterator ) {
527
- if ( ! Object . isFunction ( iterator ) )
528
- throw new TypeError ( ) ;
529
- var results = [ ] , context = arguments [ 1 ] , value ;
530
-
531
- for ( var i = 0 , length = this . length ; i < length ; i ++ ) {
532
- if ( i in this ) {
533
- value = this [ i ] ;
534
- if ( iterator . call ( context , value , i , this ) ) {
535
- results . push ( value ) ;
536
- }
537
- }
540
+ filter = Array . prototype . filter ;
541
+ }
542
+
543
+ function some ( iterator ) {
544
+ iterator = iterator || Prototype . K ;
545
+ var context = arguments [ 1 ] ;
546
+
547
+ for ( var i = 0 , length = this . length ; i < length ; i ++ ) {
548
+ if ( i in this && iterator . call ( context , this [ i ] , i , this ) ) {
549
+ return true ;
538
550
}
539
- return results ;
540
551
}
552
+
553
+ return false ;
541
554
}
542
555
543
556
if ( arrayProto . some ) {
544
557
var some = wrapNative ( Array . prototype . some ) ;
545
- } else {
546
- function some ( iterator ) {
547
- iterator = iterator || Prototype . K ;
548
- var context = arguments [ 1 ] ;
549
-
550
- for ( var i = 0 , length = this . length ; i < length ; i ++ ) {
551
- if ( i in this && iterator . call ( context , this [ i ] , i , this ) ) {
552
- return true ;
553
- }
558
+ }
559
+
560
+ function every ( iterator ) {
561
+ iterator = iterator || Prototype . K ;
562
+ var context = arguments [ 1 ] ;
563
+
564
+ for ( var i = 0 , length = this . length ; i < length ; i ++ ) {
565
+ if ( i in this && ! iterator . call ( context , this [ i ] , i , this ) ) {
566
+ return false ;
554
567
}
555
-
556
- return false ;
557
568
}
569
+
570
+ return true ;
558
571
}
559
572
560
573
if ( arrayProto . every ) {
561
574
var every = wrapNative ( Array . prototype . every ) ;
562
- } else {
563
- function every ( iterator ) {
564
- iterator = iterator || Prototype . K ;
565
- var context = arguments [ 1 ] ;
566
-
567
- for ( var i = 0 , length = this . length ; i < length ; i ++ ) {
568
- if ( i in this && ! iterator . call ( context , this [ i ] , i , this ) ) {
569
- return false ;
570
- }
571
- }
572
-
573
- return true ;
574
- }
575
575
}
576
576
577
577
// Prototype's `Array#inject` behaves similarly to ES5's `Array#reduce`.
578
- if ( arrayProto . reduce ) {
579
- var _reduce = arrayProto . reduce ;
580
- function inject ( memo , iterator ) {
581
- iterator = iterator || Prototype . K ;
582
- var context = arguments [ 2 ] ;
583
- // The iterator must be bound, as `Array#reduce` always executes the
584
- // iterator in the global context.
585
- return _reduce . call ( this , iterator . bind ( context ) , memo , context ) ;
586
- }
587
- } else {
578
+ var _reduce = arrayProto . reduce ;
579
+ function inject ( memo , iterator ) {
580
+ iterator = iterator || Prototype . K ;
581
+ var context = arguments [ 2 ] ;
582
+ // The iterator must be bound, as `Array#reduce` always executes the
583
+ // iterator in the global context.
584
+ return _reduce . call ( this , iterator . bind ( context ) , memo , context ) ;
585
+ }
586
+
587
+ // Piggyback on `Array#reduce` if it exists; otherwise fall back to the
588
+ // standard `Enumerable.inject`.
589
+ if ( ! arrayProto . reduce ) {
588
590
var inject = Enumerable . inject ;
589
591
}
590
592
0 commit comments