请问下es6语法有没有可以优化这种写法的

data(){
    return {
        classify: [
            {value: '',name: 'productTotal'},
            {value: '',name: 'auctionTotal'},
            {value: '',name: 'forumTotal'},
            {value: '',name: 'shopTotal'}
        ],
        home: [
            {value: '',name: 'aaa'},
            {value: '',name: 'bbb'},
            {value: '',name: 'ccc'},
            {value: '',name: 'ddd'}
        ]
    }
}
this.$post(this.API.GET_DATATOTAL).then(res => {
    const data = res.data.data;
    this.classify[0].value = data.productTotal + '种';
    this.classify[1].value = data.auctionTotal + '种';
    this.classify[2].value = data.forumTotal + '条';
    this.classify[3].value = data.shopTotal + '家';
    
    this.home[0].value = data.aaa + '个';
    this.home[1].value = data.bbb + '个';
    this.home[2].value = data.ccc + '个';
    this.home[3].value = data.ddd + '个';
  });

以上这种写法,感觉以此类推要写很多,有没有办法可以简化呢

阅读 2.2k
2 个回答

可以写个方法映射取值

const make = (source, data, mapping) => 
    mapping.forEach((index, value) => source[index].value = data[value[0]] + value[1]);
    
const mapping = [['aaa', '个'], ['bbb', '个'], ['ccc', '个']];
make(this.home, data, mapping)

类似于这样,但是具体的 mapping 得你自己写,对应的字段和后缀全部配好后执行方法即可

res.data.data 的结构是什么样的,可以尝试下用解构语法去赋值试试呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题