Jelajahi Sumber

Add offset facility to limit filer aka mysql limit

Mat-Moo 10 tahun lalu
induk
melakukan
7f3582731e
2 mengubah file dengan 13 tambahan dan 2 penghapusan
  1. 6 2
      src/filters/array-filters.js
  2. 7 0
      test/unit/specs/filters/filters_spec.js

+ 6 - 2
src/filters/array-filters.js

@@ -6,11 +6,15 @@ var toArray = require('../directives/public/for')._postProcess
  * Limit filter for arrays
  * Limit filter for arrays
  *
  *
  * @param {Number} n
  * @param {Number} n
+ * @param {Number} offset (Decimal expected)
  */
  */
 
 
-exports.limitBy = function (arr, n) {
+exports.limitBy = function (arr, n, offset) {
+  var off = (!offset)
+    ? 0
+    : parseInt(offset, 10)
   return typeof n === 'number'
   return typeof n === 'number'
-    ? arr.slice(0, n)
+    ? arr.slice(off, off + n)
     : arr
     : arr
 }
 }
 
 

+ 7 - 0
test/unit/specs/filters/filters_spec.js

@@ -116,6 +116,13 @@ describe('Filters', function () {
     assertArray(res, [1, 2, 3])
     assertArray(res, [1, 2, 3])
     res = filter(arr, -1)
     res = filter(arr, -1)
     assertArray(res, [1, 2])
     assertArray(res, [1, 2])
+    // with offsets, note offsets are 0 bound (as expected)
+    res = filter(arr, 1, 1)
+    assertArray(res, [2])
+    res = filter(arr, 2, 1)
+    assertArray(res, [2, 3])
+    res = filter(arr, 1, 2)
+    assertArray(res, [3])
   })
   })
 
 
   it('filterBy', function () {
   it('filterBy', function () {