Jelajahi Sumber

add limitBy filter

Evan You 10 tahun lalu
induk
melakukan
ca6934dba3
2 mengubah file dengan 25 tambahan dan 0 penghapusan
  1. 12 0
      src/filters/array-filters.js
  2. 13 0
      test/unit/specs/filters/filters_spec.js

+ 12 - 0
src/filters/array-filters.js

@@ -2,6 +2,18 @@ var _ = require('../util')
 var Path = require('../parsers/path')
 var toArray = require('../directives/public/for')._postProcess
 
+/**
+ * Limit filter for arrays
+ *
+ * @param {Number} n
+ */
+
+exports.limitBy = function (arr, n) {
+  return typeof n === 'number'
+    ? arr.slice(0, n)
+    : arr
+}
+
 /**
  * Filter filter for arrays
  *

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

@@ -105,6 +105,19 @@ describe('Filters', function () {
     }, 500)
   })
 
+  it('limitBy', function () {
+    var filter = filters.limitBy
+    var arr = [1, 2, 3]
+    var res = filter(arr, false)
+    expect(res).toBe(arr)
+    res = filter(arr, 1)
+    assertArray(res, [1])
+    res = filter(arr, 10)
+    assertArray(res, [1, 2, 3])
+    res = filter(arr, -1)
+    assertArray(res, [1, 2])
+  })
+
   it('filterBy', function () {
     var filter = filters.filterBy
     var arr = [