合并具有相同键的对象

时间:2019-07-14 23:19:03

标签: javascript lodash jbuilder

编辑:

该问题被标记为重复,我忘了提我已经检查了其中一些解决方案,但是在查看Vue Devtools时,我收到了undefined。我目前正在尝试使用lodash方法:

computed: {
      ...mapState({
        categories: state => state.user.categories,
      }),
      mergedCategories: function() {
        const mergeNames = arr => {
          _.chain(arr).groupBy('name').mapValues(v => {
            _.chain(v).map('name').flattenDeep()
          }).value();
        }
        console.log(mergeNames(this.categories));
      }
    },

原始问题:

我正在构建Vue / Rails应用程序,并在后端使用Jbuilder发送json响应。当前,我收到的categories数组包含items的数组。不过,如果两个或多个类别具有相同的名称,我想做的就是结合items。理想情况下,可以通过Jbuilder完成,但是我不介意使用香草JS或Lodash在前端进行。

示例: raw.json

categories: [
    0: {
        name: "Group A",
        items: Array[4]
    },
    1: {
        name: "Group B",
        items: Array[2]
    },
    2: {
        name: "Group A",
        items: Array[8],
    }   
]

预期产量

categories: [
    0: {
        name: "Group A",
        items: Array[12] <-- Group A has been combined
    },
    1: {
        name: "Group B",
        items: Array[2]
    }, 
]

这是我目前正在使用的东西:

categories.jbuilder.json

json.categories @categories do |category|
    json.(category, :id, :name, :user_id, :created_at, :updated_at)
    json.items category.items do |item|
      json.(item, :id, :name, :category_id)
    end
  end

使用Jbuilder,Vanilla JS或Lodash获得理想结果的最佳方法是什么?

0 个答案:

没有答案