Jelajahi Sumber

Fixed: the "pluralize" filter with multi arguments, when selected argument is empty string (#3101)

Alex 10 tahun lalu
induk
melakukan
453565e501
2 mengubah file dengan 9 tambahan dan 3 penghapusan
  1. 7 3
      src/filters/index.js
  2. 2 0
      test/unit/specs/filters/filters_spec.js

+ 7 - 3
src/filters/index.js

@@ -104,9 +104,13 @@ export default {
 
   pluralize (value) {
     var args = toArray(arguments, 1)
-    return args.length > 1
-      ? (args[value % 10 - 1] || args[args.length - 1])
-      : (args[0] + (value === 1 ? '' : 's'))
+    var length = args.length
+    if (length > 1) {
+      var index = value % 10 - 1
+      return index in args ? args[index] : args[length - 1]
+    } else {
+      return args[0] + (value === 1 ? '' : 's')
+    }
   },
 
   /**

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

@@ -53,6 +53,8 @@ describe('Filters', function () {
     expect(filter(2, 'st', 'nd', 'rd', 'th')).toBe('nd')
     expect(filter(3, 'st', 'nd', 'rd', 'th')).toBe('rd')
     expect(filter(4, 'st', 'nd', 'rd', 'th')).toBe('th')
+    // multi args where selected argument is empty string
+    expect(filter(1, '', 'nd', 'rd', 'th')).toBe('')
   })
 
   it('currency', function () {