JS实现一个Json对象根据多个Key合并,并且实现数据累加

JS实现一个Json对象根据多个Key合并,并且实现数据累加

原数据如下:

var data = 
		[{"companyName": "A","orderAmt": 100,"Qty": 1,"spec": "800*600","svg": ""},
		 {"companyName": "A","orderAmt": 100,"Qty": 1,"spec": "800*600","svg": ""},
		 {"companyName": "A","orderAmt": 200,"Qty": 3,"spec": "800*600","svg": "*"},
		 {"companyName": "A","orderAmt": 200,"Qty": 3,"spec": "800*600","svg": "*"},
		 {"companyName": "B","orderAmt": 400,"Qty": 5,"spec": "700*500","svg": ""},
		 {"companyName": "B","orderAmt": 200,"Qty": 5,"spec": "700*500","svg": ""},
		 {"companyName": "B","orderAmt": 200,"Qty": 5,"spec": "700*500","svg": ""}
		];

根据 companyName,spec 和 svg 合并,如果这三个相同,则实现 orderAmt和Qty累加,并且统计出累加的数量
合并后的数据:

[{"companyName":"A","orderAmt":200,"Qty":2,"spec":"800*600","svg":"","number":2},
{"companyName":"A","orderAmt":400,"Qty":6,"spec":"800*600","svg":"*","number":2},
{"companyName":"B","orderAmt":800,"Qty":15,"spec":"700*500","svg":"","number":3}]

js代码如下所示:

<script type="text/javascript">
		var data = 
		[{"companyName": "A","orderAmt": 100,"Qty": 1,"spec": "800*600","svg": ""},
		 {"companyName": "A","orderAmt": 100,"Qty": 1,"spec": "800*600","svg": ""},
		 {"companyName": "A","orderAmt": 200,"Qty": 3,"spec": "800*600","svg": "*"},
		 {"companyName": "A","orderAmt": 200,"Qty": 3,"spec": "800*600","svg": "*"},
		 {"companyName": "B","orderAmt": 400,"Qty": 5,"spec": "700*500","svg": ""},
		 {"companyName": "B","orderAmt": 200,"Qty": 5,"spec": "700*500","svg": ""},
		 {"companyName": "B","orderAmt": 200,"Qty": 5,"spec": "700*500","svg": ""}
		];

		sum(data);
		function sum(data) {
			var result = [];
			var newData = data;
			var delData = [];
			data1:
				for (var i in data) {
					var json = data[i];
					var countAmt = data[i].orderAmt;
					var countQty = data[i].Qty;
					var number = 1;
					data2:
						for (var j in newData) {
							if (delData != null) {
								for (var h in delData) {
									if (i == delData[h]) {
										continue data1;
									}
									if (j == delData[h]) {
										continue data2;
									}
								}
							}
							if (i != j && data[i].companyName == newData[j].companyName &&
								data[i].svg == newData[j].svg &&
								data[i].spec == newData[j].spec ) {
								delData.push(j);
								number++;
								countAmt += newData[j].orderAmt;
								countQty += newData[j].Qty;
							}
						}
					json.Qty = countQty;
					json.orderAmt = countAmt;
					json.number = number;
					result.push(json);
				}
				console.log(result);
			return result;
		}
	</script>

版权声明:本文为qq_38799009原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。