首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Vue3从产品数组中分组产品和显示数量

使用Vue3从产品数组中分组产品和显示数量
EN

Stack Overflow用户
提问于 2021-12-07 16:51:56
回答 1查看 153关注 0票数 2

我设法计数了数组中的每一个重复元素,现在我只想显示一个和每个产品数量。

这就是我现在拥有的:

我有一个函数,它是从一个名为Helpers.js的文件导出的,然后在Vue组件中使用。

Helpers.js:

代码语言:javascript
复制
export const groupBy = (arr, criteria) => {
    return arr.reduce((obj, item, index) => {
        const key = typeof criteria === 'function' ? criteria(item, index) : item[criteria];

        if (!obj.hasOwnProperty(key)) {
            obj[key] = [];
        }

        obj[key].push(item);
        return obj;
    }, {});
}

订单组件:

代码语言:javascript
复制
import { groupBy } from "@/Utils/Helpers";
... rest of the component...

const groupedOrders = computed(() => groupBy(props.order.products, (product) => product.id));

这在我的模板中:

代码语言:javascript
复制
<div class="mt-5 mx-8" v-for="products in groupedOrders">
                {{ products.length }}
                <OrderItem  
                    v-for="(product, index) in products"
                    :product="product"
                    :key="index" 
                />
            </div>

这是我在控制台中正在记录的数据:

任何线索如何使它只显示一个莫迪和显示的数量,类似于Modi (Qtty. 4)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-07 17:51:13

当前,您的代码遍历products数组,因为您在v-for组件上使用了OrderItem组件,因此您为产品数组中的每个产品创建了一个块。

要实现您想要的结果,只需获取数组的一个元素并输出数组的长度,而不是遍历它。

代码语言:javascript
复制
<div class="mt-5 mx-8" v-for="(products, groupIndex) in groupedOrders">
    <OrderItem
        :product="products[0]"
        :key="groupIndex" 
        />
    <span>Quantity: {{ products.length }}</span>
</div>

请记住,您需要确保products数组不是空的,这样才能访问第一个元素而不会出错。如果您使用您提供的分组函数,这应该是可以的。

现在最有可能做到的是,添加产品瓷砖后面的数量。为了打印产品瓷砖中的数量,需要将其提供给您的OrderItem组件。

代码语言:javascript
复制
<OrderItem
        :product="products[0]"
        :key="groupIndex"
        :quantity="products.length"
        />

然后在OrderItem.vue

代码语言:javascript
复制
... component stuff ...
props: [
    ... your other props ...
    'quantity',
    ... your other props ...
]

OrderItem模板中,在您喜欢的位置:

代码语言:javascript
复制
<span v-if="quantity > 0"> Quantity: {{ quantity }} </span>

如果不提供quantity,则v-if条件将确保不输出数量文本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70263981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档