فهرست منبع

Add offset facility to limit filer aka mysql limit

Mat-Moo 10 سال پیش
والد
کامیت
7f3582731e
2فایلهای تغییر یافته به همراه13 افزوده شده و 2 حذف شده
  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
  *
  * @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'
-    ? arr.slice(0, n)
+    ? arr.slice(off, off + n)
     : arr
 }
 

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

@@ -116,6 +116,13 @@ describe('Filters', function () {
     assertArray(res, [1, 2, 3])
     res = filter(arr, -1)
     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 () {