
目次
Vue.jsのフィルターとは
Vue.jsのフィルターとはテキストフォーマットなどを適用するためもの。
例えば{{ str }}がabcと表示される箇所に{{ str | capitalize }}のような記述でフィルターを記述するとAbcで値が返されるようになる。
Vue.js 2.xではフィルターはすべて自分で作成する必要がある。
Vue.js 1.x のデフォルトのフィルター
Vue.js 1.x以下だと10個のデフォルトのフィルターが存在するが2.x以降では削除されているため、これらは自分で作成する必要がある。
- capitalize
- uppercase
- lowercase
- currency
- pluralize
- json
- key
- debounce
- filterBy
- orderBy
以降にVue.jsでよく使用されるカスタムフィルターのサンプルを掲載した。
必要なものを取り入れたり、フィルター作りの参考用(babelとpolyfillが必要)。
2.x以降ではfilterByやorderByなどはcomputedを使うべきなので未作成。
capitalize
英字の先頭を大文字にする。
{{ str | capitalize }} abc => Abc
uppercase
英字をすべて大文字にする。
{{ str | uppercase }} abc => ABC
lowercase
英字をすべて小文字にする。
{{ str | lowercase }} ABC => abc
comma
数字をカンマ区切り。
{{ num | comma }} 1234567 => 1,234,567
yen
円記号を付ける。
{{ num | yen }} 1000000 => ¥1000000
currency
円記号とカンマを付ける。
フィルターは複数付けることもできるので{{ num | yen | comma }}とすれば同じ結果になる。
{{ num | currency }} 1000000 => ¥1,000,000 {{ num | yen | comma }} 1000000 => ¥1,000,000
pluralize
引数の文字列を付ける。1つのときは前、2つ以上のときは後に付ける。
引数の個数を超えると最後の値を付ける。
{{ item | pluralize('st', 'nd', 'rd', 'th') }} [1, 2, 3, 4, 5] => 1st 2nd 3rd 4th 5th
json
jsonを文字列に変換。
{{ member | json }} => { "id": 1, "name": "foo" }
max
配列の最大値を返す。
引数で2番目以降の最大値も指定できる。
{{ arr | max }} [1, 3, 5, 2, 4] => 5 {{ arr | max(2) }} [1, 3, 5, 2, 4] => [5, 4]
min
配列の最小値を返す。
引数で2番目以降の最小値も指定できる。
{{ arr | min }} [1, 3, 5, 2, 4] => 1 {{ arr | min(2) }} [1, 3, 5, 2, 4] => [1,2]
length
lengthを返す。
{{ arr | length }} ['foo', 'bar', 'baz'] => 3
rand
配列内のどれかをランダムで返す。
引数で返す個数を指定できる。
{{ arr | rand }} ['A', 'B', 'C', 'D'] => C {{ arr | rand(3) }} ['A', 'B', 'C', 'D'] => [ "B", "D", "A" ]
first
配列の最初の値を返す。
{{ arr | first }} ['foo', 'bar', 'baz'] => foo
last
配列の最後の値を返す。
{{ arr | last }} ['foo', 'bar', 'baz'] => baz
reverse
文字列を逆にする。
{{ str | reverse }} 'abc' => cba
truncate
指定した引数の文字数を超える文字列を省略。
{{ str | truncate(5) }} '1234567890' => 12345... {{ str | truncate(5, '〜') }} '1234567890' => 12345〜
trunc
小数点切り捨て。
引数で小数点第何位で切り捨てるか指定できる。
{{ num | trunc }} 3.14159 => 3 {{ num | trunc(2) }} 3.14159 => 3.14
toFixed
数を固定小数点表記を用いて近似値で返す。
引数で小数点第何位か指定できる。
{{ num | toFixed }} 123.456 => 123 {{ num | toFixed(2) }} 123.456 => 123.46
kana
全角カナまたは半角カナに変換して返す。
引数がないと半角カナ=>全角カナ。引数が1だと全角カナ=>半角カナ。
{{ str | kana }} 'ハローワールド' => ハローワールド {{ str | kana(1) }} 'ハローワールド' => ハローワールド
repeat
引数の回数分文字列を繰り返す。
{{ str | repeat(3) }} 'abc' => abcabcabc
trim
文字列の両端の空白を削除。
{{ str | trim }} ' abc ' => 'abc'
replace
文字列をすべて置換。
{{ str | replace('b', 'x') }} 'abcba' => 'axcxa'
youbi
日付に曜日を付ける。
{{ date | youbi }} 2018年12月4日 => 2018年12月4日 (火) {{ date | youbi('曜') }} 2018/12/4 => 2018/12/4 火曜
gengou
西暦を元号付きの和暦に置換。
{{ year | gengou }} 1986 => 昭和61
pluck
指定したキーの値を返す。
{{ users | pluck('name') }} [ "sato", "suzuki", "yamada" ]
補足: Vue.jsは直接メソッドが使用可能
Vue.jsは直接メソッドが使用できるので以下のような書き方ができる。
arr: ['foo', 'bar', 'baz'] でjoin()使用の場合 {{ arr.join('-') }} => 結果はfoo-bar-baz
前述のtoFixedなどはフィルタにしなくても直接記述することが可能。