8000 Reverse factory useKeys instead of instanceof · sxhao/immutable-js@a51e636 · GitHub
[go: up one dir, main page]

Skip to content

Commit a51e636

Browse files
committed
Reverse factory useKeys instead of instanceof
1 parent 302b69a commit a51e636

File tree

3 files changed

+31
-37
lines changed

3 files changed

+31
-37
lines changed

dist/Immutable.js

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ var $Sequence = Sequence;
373373
return reversed.reduce.apply(reversed, arguments);
374374
},
375375
reverse: function() {
376-
return reverseFactory(this);
376+
return reverseFactory(this, true);
377377
},
378378
slice: function(begin, end) {
379379
if (wholeSlice(begin, end, this.length)) {
@@ -652,6 +652,9 @@ var $IndexedSequence = IndexedSequence;
652652
lastIndexOf: function(searchValue) {
653653
return this.toKeyedSeq().reverse().indexOf(searchValue);
654654
},
655+
reverse: function() {
656+
return reverseFactory(this, false);
657+
},
655658
splice: function(index, removeNum) {
656659
var numArgs = arguments.length;
657660
removeNum = Math.max(removeNum | 0, 0);
@@ -1028,7 +1031,7 @@ var KeyedIndexedSequence = function KeyedIndexedSequence(indexedSeq) {
10281031
},
10291032
reverse: function() {
10301033
var $__0 = this;
1031-
var reversedSequence = reverseFactory(this);
1034+
var reversedSequence = reverseFactory(this, true);
10321035
reversedSequence.valueSeq = (function() {
10331036
return $__0._seq.reverse();
10341037
});
@@ -1170,8 +1173,7 @@ function mapFactory(sequence, mapper, context) {
11701173
};
11711174
return mappedSequence;
11721175
}
1173-
function reverseFactory(sequence) {
1174-
var isIndexedSequence = (sequence instanceof IndexedSequence);
1176+
function reverseFactory(sequence, useKeys) {
11751177
var reversedSequence = sequence.__makeSequence();
11761178
reversedSequence.length = sequence.length;
11771179
reversedSequence.reverse = (function() {
@@ -1184,16 +1186,9 @@ function reverseFactory(sequence) {
11841186
});
11851187
return flipSequence;
11861188
};
1187-
if (isIndexedSequence) {
1188-
var reverseIndexOffset = sequence.length - 1;
1189-
reversedSequence.get = (function(key, notSetValue) {
1190-
return sequence.get(reverseIndexOffset - key, notSetValue);
1191-
});
1192-
} else {
1193-
reversedSequence.get = (function(key, notSetValue) {
1194-
return sequence.get(key, notSetValue);
1195-
});
1196-
}
1189+
reversedSequence.get = (function(key, notSetValue) {
1190+
return sequence.get(useKeys ? key : -1 - key, notSetValue);
1191+
});
11971192
reversedSequence.has = (function(key) {
11981193
return sequence.has(key);
11991194
});

0 commit comments

Comments
 (0)
0