{{ arr | rand }}
{{ arr | rand(3) }}
<div id="app">
<p>{{ arr | rand }}</p>
<p>{{ arr | rand(3) }}</p>
</div>
new Vue({
el: '#app',
data: {
arr: ['A', 'B', 'C', 'D']
},
filters: {
rand(arr, n) {
if (arr.length < n) {
throw new Error('Vue.js filter randの引数が多すぎます')
return
} else if (n > 1) {
let result = []
let index
while(result.length < n) {
index = Math.floor(Math.random() * arr.length)
if (~result.indexOf(arr[index])) continue
result.push(arr[index])
}
return result
} else {
return arr[Math.floor(Math.random() * arr.length)]
}
}
}
})