【问题标题】:Sort array based on intermediate model's attribute根据中间模型的属性对数组进行排序
【发布时间】:2020-07-09 13:07:58
【问题描述】:

我有三个模型(我在前端使用 Vue/Vuex-ORM)。 CategoryCategoryItemItem

我能够获取一个类别数组,每个类别中都有一个项目数组。中间连接模型定义了这两个模型的关系,我可以这样访问:

// array of categories, each category has array of items
const categories = Category.query().where('pack_id', this.selectedPack.id).with('items').get();

categories.map(category => {
    category.items.forEach(item => {
        console.log('item.pivot: ', item.pivot); // pivot refers to join model
        // how to order items based on item.pivot?
    })
})

.forEach 中,我可以使用item.pivot 访问连接模型。然而,我想做的是根据item.pivot.position 对每个类别的项目进行排序。

我开始沿着 .map 内的第一行定义一个新的空数组的路径,然后理论上会根据位置是更高还是更低推入一个新值,但我不能完全围绕如何实现这一点。

谢谢!

【问题讨论】:

    标签: javascript arrays vue.js foreach vuex-orm


    【解决方案1】:

    好吧,只是我的运气。发布这个问题半小时后,我想通了!这就是我所做的,以防有人好奇。

    categories() {
        const categories = Category.query().where('pack_id', this.selectedPack.id).with('items').get();
    
        categories.forEach(category => category.items.sort(this.compare));
        return cats;
    }
    
    compare(a, b) {
        let comparison = 0;
        if (a.pivot.position > b.pivot.position) comparison = 1;
        else if (a.pivot.position < b.pivot.position) comparison = -1;
        return comparison;
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 2017-02-23
      • 1970-01-01
      相关资源
      最近更新 更多