我有一个集合,如果满足条件,我想增加值。我想使用import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'
import Login from './views/Login.vue'
import Register from './views/Register.vue'
import firebase from 'firebase'
Vue.use(Router)
const router = new Router({
routes: [
{
path: '/',
name: 'home',
component: Home,
meta: {
requiresAuth: true
}
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
},
{
path: '/login',
name: 'login',
component: Login,
meta: {
requiresGuest: true
}
},
{
path: '/register',
name: 'register',
component: Register,
meta: {
requiresGuest: true
}
}
]
})
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
firebase.auth().onAuthStateChanged((user) => {
if (!user) {
next({
path: '/login',
query: {
redirect: to.fullPath
}
})
} else {
next();
}
});
}
else if (to.matched.some(record => record.meta.requiresGuest)) {
firebase.auth().onAuthStateChanged((user) => {
if (user) {
next({
path: '/',
query: {
redirect: to.fullPath
}
})
} else {
next();
}
});
}
else {
next();
}
});
export default router;
方法来迭代并返回具有总数的数组(或集合)。到目前为止,我有这个:
map()
它可以工作,但我认为它看起来很奇怪,而且不是这种“粗俗”的方式。还有其他选择让它看起来更好吗?
答案 0 :(得分:1)
您可以使用map()
代替reduce()
:
return $this->reviewPhotosRepository
->getByHotelId($hotel_id)
->reduce(function ($carry, $item) {
$carry['notChecked'] += $item['checked'] ? 1 : 0;
$carry['published'] += $item['published'] ? 1 : 0;
$carry['total'] += 1;
return $carry;
}, [
'notChecked' => 0,
'published' => 0,
'total' => 0
]);
好些了吗?好吧,你知道,那就像你的看法,伙计。