,可以使用computed
属性和reduce
方法来实现。
首先,我们需要在Vue实例的data
中定义一个对象数组,例如:
data() {
return {
items: [
{ id: 1, name: 'Apple', category: 'Fruit' },
{ id: 2, name: 'Banana', category: 'Fruit' },
{ id: 3, name: 'Carrot', category: 'Vegetable' },
{ id: 4, name: 'Tomato', category: 'Vegetable' },
{ id: 5, name: 'Orange', category: 'Fruit' },
]
}
}
然后,我们可以使用computed
属性来对对象数组进行分组,代码如下:
computed: {
groupedItems() {
return this.items.reduce((result, item) => {
const key = item.category;
if (!result[key]) {
result[key] = [];
}
result[key].push(item);
return result;
}, {});
}
}
在上述代码中,我们使用reduce
方法对items
数组进行遍历,并根据category
属性作为键来分组对象。如果分组中不存在该键,则创建一个空数组作为值,然后将当前对象item
添加到对应的分组中。
最后,我们可以在模板中使用groupedItems
来展示分组后的结果,例如:
<template>
<div>
<div v-for="(group, key) in groupedItems" :key="key">
<h2>{{ key }}</h2>
<ul>
<li v-for="item in group" :key="item.id">
{{ item.name }}
</li>
</ul>
</div>
</div>
</template>
上述模板中,我们使用v-for
指令遍历groupedItems
对象,将每个分组的键和值展示出来,并使用嵌套的v-for
指令遍历每个分组中的对象数组,将每个对象的name
属性展示出来。
这样,我们就可以在VueJs中对对象数组中的唯一对象及其值进行分组了。
推荐的腾讯云相关产品:无
领取专属 10元无门槛券
手把手带您无忧上云