|
- import Vue from 'vue'
- import App from '@/App.vue'
-
- declare global {
- interface Array<T> {
- joinGeneral (item: T, endItem: T|null): Array<T>;
- /* eslint-disable-next-line */
- unique (predicate?: (elem: T) => any): Array<T>;
- }
- }
-
- /* eslint-disable-next-line */
- Array.prototype.joinGeneral = function (item, endItem = null) {
- if (endItem === null) {
- return this.slice(0, -1).flatMap(x => [x, item]).concat(this.slice(-1))
- } else {
- return this.slice(0, -2).flatMap(x => [x, item]).concat(this.slice(-2, -1).flatMap(x => [x, endItem])).concat(this.slice(-1))
- }
- }
-
- /* eslint-disable-next-line */
- Array.prototype.unique = function<T> (predicate?: (elem: T) => any): Array<T> {
- const set = new Set()
- const result: Array<T> = [] as T[]
- this.forEach(elem => {
- // if there is no predicate, just use the identity function
- const predResult = (predicate ?? (x => x))(elem)
- if (!set.has(predResult)) {
- set.add(predResult)
- result.push(elem)
- }
- })
- return result
- }
-
- Vue.config.productionTip = false
-
- new Vue({
- render: h => h(App)
- }).$mount('#app')
|