javascript - 数组有 10 个代表玩家的对象,我试图在 Vue.js 中循环并显示第 1 队的 5 名玩家。我做对了吗?

标签 javascript vue.js vuejs2

this.match.details.participants 包含一个包含 10 个代表玩家的对象的数组。每个球员都有一个属性teamId,用于确定他是在第一队还是第二队。我正在尝试循环所有参与者,并在页面的第 1 列中显示第一个团队,在页面的第 2 列中显示第二个团队。

我基本上已经弄清楚了,但我很好奇我的实现是否正确以及是否有更好的替代方案。目前我是这样做的:

<div v-for='friendly in friendlyTeam'>
    {{ friendly }}
</div>
<div v-for='enemy in enemyTeam'>
    {{ enemy }}
</div>

data(){
    return {
        match: null
    }
},
computed: {
    friendlyTeam(){
        let friendlyTeamId = this.match.mainParticipant.teamId; // id is either 100 or 200
        let friendlyTeam = this.match.details.participants.filter(value => value.teamId === friendlyTeamId);

        return friendlyTeam;
    },
    enemyTeam(){
        let enemyTeamId = 0;
        let friendlyTeamId = this.match.mainParticipant.teamId; // id is either 100 or 200
        if (friendlyTeamId == 100) {
            enemyTeamId = 200
        } else if (friendlyTeamId == 200) {
            enemyTeamId = 100
        }
        let enemyTeam = this.match.details.participants.filter(value => value.teamId === enemyTeamId );

        return enemyTeam;
    }
}

这会返回一个由 5 个对象组成的数组,代表友方队伍中的玩家。这工作得很好,但是,似乎我必须复制并粘贴整个计算属性并对其进行一些更改才能获得敌方队伍,这将打破 DRY 原则。

除了我所做的之外,还有更好的选择吗?使用计算属性仅提取我想要的对象然后循环它们是一个好主意吗?

最佳答案

你可以重构一下。

if (friendlyTeamId == 100) {
        let enemyTeamId == 200
    } else if (friendlyTeamId == 200) {
        let enemyTeamId == 100
 }

更改为:

let enemyTeamId = friendlyTeamId === 100 ? 200 : 100

关于javascript - 数组有 10 个代表玩家的对象,我试图在 Vue.js 中循环并显示第 1 队的 5 名玩家。我做对了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58063165/

相关文章:

javascript - 在vue js上滚动页面到div onload

javascript - 如何计算两个日期之间经过的天数

javascript - 使用 Object.create 而不是 new 时传递参数

javascript - 当图像加载到 <img> 中时调用或验证图片 URL

jquery - Vue.js 在渲染组件前填充数据

javascript - 为什么我使用 Vue.js 时搜索不起作用?

javascript - v-on click,仅在满足条件时添加处理程序

javascript - 如何访问vuejs中导出的​​ `this.`

javascript - Node.js 和 Multer - 在回调函数 (req,res) 中处理上传文件的目的地

javascript - node.js 错误 : connect ECONNREFUSED; response from server