【js】数组对象相同键名进行合并

前言:
在项目过程中,发现后台给返回的数据跟所需要的数据形式并不相同,后台返回的数据形式如图:
在这里插入图片描述
所需要的数据形式如下图:
在这里插入图片描述

			function resetArr(arr) {
    
    
				// arrWarp 用于存放唯一键, result 最终返回数组
				let arrWarp = [],result = [];
				// 最终返回数组
				for (let item of arr) {
    
    
					if (!arrWarp.includes(item.attrName)) {
    
    
						let obj = {
    
    
							attrName: item.attrName,
							attrValueArr: []
							// classList 存放相同Id下的数据
						}
						obj.attrValueArr.push(item.attrValueArr);
						result.push(obj);
						arrWarp.push(item.attrName);
					} else {
    
    
					//如果跟arrWarp中有相同的内容,则选择相同的键名,插入到相同键名下的attrValueArr数组中
						result[arrWarp.indexOf(item.attrName)].attrValueArr.push(item.attrValueArr);
					};
				};
				return result;
			}


参考:JavaScript 合并数组对象中某个相同值(数组对象合并)
but,由以上可知另一个问题,在attrValueArr中会出现相同的键名,因此我们需要在添加时就,判断是否有重复值。
详见:数组去重、添加不重复元素的方法

猜你喜欢

转载自blog.csdn.net/liqiannan8023/article/details/130111661