编辑:
该问题被标记为重复,我忘了提我已经检查了其中一些解决方案,但是在查看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获得理想结果的最佳方法是什么?