js处理数组对象中,先根据某个字段组成,新数组再根据某个字段组数据

// 后台返回的数据类似这样的
const beforeData = [
            {
                productName: "摘要年份酒12年(白金)",
                orderNo: 'Z2306011yZm',
                qrcode: "CJVtcCHaltwczHrs"
            },
            {
                productName: "摘要年份酒12年(白金)",
                orderNo: 'Z2306011yZm',
                qrcode: "CJVtcCHaltwczHrs"
            },
            {
                productName: "摘要年份酒12年(白金)",
                orderNo: 'Z2306011yZm111',
                qrcode: "CJVtcCHaltwczHrs"
            },
            {
                productName: "摘要年份酒12年(白金)111",
                orderNo: 'Z2306011yZm111',
                qrcode: "CJVtcCHaltwczHrs"
            }
]

  // 数据处理
  function processingData(beforeData) {
		let tempArr = [];
		let afterData = []; //新数组
		for (let i = 0; i < beforeData.length; i++) {
			   if (tempArr.indexOf(beforeData[i].productName) === -1) {
					afterData.push({
							productName: beforeData[i].productName,
							origin: [{
								orderNo: beforeData[i].orderNo
							}],
							qrcodeArr: [beforeData[i].qrcode]
						});
						tempArr.push(beforeData[i].productName);
					} else {
						for (let j = 0; j < afterData.length; j++) {
							if (afterData[j].productName == beforeData[i].productName) {
								afterData[j].origin.push({
									orderNo: beforeData[i].orderNo
								});
								afterData[j].qrcodeArr.push(beforeData[i].qrcode)
								break;
							}
						}
					}
				}
				afterData.forEach(item => {
                    // 这个是获取相同的orderNo的出现几次
					const result = item.origin.reduce(
						(acc, o) => ((acc[o.orderNo] = (acc[o.orderNo] || 0) + 1), acc), {}
					);
					item.origin.forEach(it => {
						this.$set(it, 'num', result[it.orderNo])
					});
                    // 这里是去重orderNo相同的,因为我只需要相同的展示一个,然后相同的有多少个数量
					let obj = {};
					let peon = item.origin.reduce((cur, next) => {
						obj[next.orderNo] ? "" : obj[next.orderNo] = true && cur.push(next);
						return cur;
					}, [])
					item.origin = peon
				});
				return afterData
			},
 console.log(processingData(beforeData))

 我的需求是:先根据产品名称去筛选出来一样的,再根据出库单号去筛选

然后实际的页面效果图是:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值