JavaScript 数组去重:查找相同 materialCode 下的相同 craftCode 对象
let data = [ { 'del': 0, 'createBy': 'GW00303172', 'createTime': '2023-10-16 11:17:16', 'updateBy': 'GW00303172', 'updateTime': '2023-10-16 11:17:16', 'id': 2685, 'processId': 1383, 'projectId': 35, 'productCode': 'PA 20230905 739d896a58', 'productBomCode': '20230905 11 63d3244aa7', 'materialCode': 'PA 20230905 739d896a58', 'materialName': '前衬套', 'electrophoreticArea': 200, 'weldBeadLength': 100, 'roughWeight': 2, 'materialCategory': '2', 'materialType': 0, 'supplierStatus': '1', 'materialStatus': '3', 'importanceLevel': '1', 'sourceFrom': '0', 'yieldCode': null, 'level': 1, 'weight': 1.02, 'specifications': '--', 'borrowRelation': 'J65', 'num': 1, 'targetPrice': 66, 'other': '1', 'projectCode': '1', 'materialId': 2685, 'deliveryAddress': '5', 'passRatio': '5', 'craftCode': 'GY000105', 'craftName': '工艺1', 'craftSubType': '3', 'type1': '0', 'type2': '0', 'type3': '0', 'productionPlaceCode': 'CD0003' }, { 'rowId': '1697437037701926', 'productCode': 'PA 20230905 739d896a58', 'projectCode': '1', 'productBomCode': '20230905 11 63d3244aa7', 'processId': 1383, 'materialCode': 'PA 20230905 739d896a58', 'materialName': '前衬套7', 'materialCategory': '2', 'specifications': '--', 'weight': 1.02, 'importanceLevel': '1', 'level': 1, 'sourceFrom': '0', 'materialId': 2685, 'productionPlaceCode': 'CD0006', 'deliveryAddress': '6', 'passRatio': '5', 'craftCode': 'GY000106', 'craftName': '工艺3', 'craftSubType': '6', 'type1': '0', 'type2': '1', 'type3': '0' }, { 'rowId': '1697437037701926', 'productCode': 'PA 20230905 739d896a58', 'projectCode': '1', 'productBomCode': '20230905 11 63d3244aa7', 'processId': 1383, 'materialCode': 'PA 20230905 739d896a58', 'materialName': '前衬套5', 'materialCategory': '2', 'specifications': '--', 'weight': 1.02, 'importanceLevel': '1', 'level': 1, 'sourceFrom': '0', 'materialId': 2685, 'productionPlaceCode': 'CD0006', 'deliveryAddress': '6', 'passRatio': '5', 'craftCode': 'GY000106', 'craftName': '工艺3', 'craftSubType': '6', 'type1': '0', 'type2': '1', 'type3': '0' }, { 'rowId': '1697437037701926', 'productCode': 'PA 20230905 739d896a58', 'projectCode': '1', 'productBomCode': '20230905 11 63d3244aa7', 'processId': 1383, 'materialCode': 'PA 20230905 666666', 'materialName': '前衬套', 'materialCategory': '2', 'specifications': '--', 'weight': 1.02, 'importanceLevel': '1', 'level': 1, 'sourceFrom': '0', 'materialId': 2685, 'productionPlaceCode': 'CD0006', 'deliveryAddress': '6', 'passRatio': '5', 'craftCode': 'GY0001111', 'craftName': '工艺4', 'craftSubType': '6', 'type1': '0', 'type2': '1', 'type3': '0' }, { 'rowId': '1697437037701926', 'productCode': 'PA 20230905 739d896a58', 'projectCode': '1', 'productBomCode': '20230905 11 63d3244aa7', 'processId': 1383, 'materialCode': 'PA 20230905 666666', 'materialName': '前衬套', 'materialCategory': '2', 'specifications': '--', 'weight': 1.02, 'importanceLevel': '1', 'level': 1, 'sourceFrom': '0', 'materialId': 2685, 'productionPlaceCode': 'CD0006', 'deliveryAddress': '6', 'passRatio': '5', 'craftCode': 'GY0001112', 'craftName': '工艺5', 'craftSubType': '6', 'type1': '0', 'type2': '1', 'type3': '0' }, { 'rowId': '1697437037701926', 'productCode': 'PA 20230905 739d896a58', 'projectCode': '1', 'productBomCode': '20230905 11 63d3244aa7', 'processId': 1383, 'materialCode': 'PA 20230905 666666', 'materialName': '前衬套4', 'materialCategory': '2', 'specifications': '--', 'weight': 1.02, 'importanceLevel': '1', 'level': 1, 'sourceFrom': '0', 'materialId': 2685, 'productionPlaceCode': 'CD0006', 'deliveryAddress': '6', 'passRatio': '5', 'craftCode': 'GY0001113', 'craftName': '工艺6', 'craftSubType': '6', 'type1': '0', 'type2': '1', 'type3': '0' }, { 'rowId': '1697437037701926', 'productCode': 'PA 20230905 739d896a58', 'projectCode': '1', 'productBomCode': '20230905 11 63d3244aa7', 'processId': 1383, 'materialCode': 'PA 20230905 666666', 'materialName': '前衬套3', 'materialCategory': '2', 'specifications': '--', 'weight': 1.02, 'importanceLevel': '1', 'level': 1, 'sourceFrom': '0', 'materialId': 2685, 'productionPlaceCode': 'CD0006', 'deliveryAddress': '6', 'passRatio': '5', 'craftCode': 'GY0001113', 'craftName': '工艺6', 'craftSubType': '6', 'type1': '0', 'type2': '1', 'type3': '0' }, { 'rowId': '1697437037701926', 'productCode': 'PA 20230905 739d896a58', 'projectCode': '1', 'productBomCode': '20230905 11 63d3244aa7', 'processId': 1383, 'materialCode': 'PA 20230905 666666', 'materialName': '前衬套2', 'materialCategory': '2', 'specifications': '--', 'weight': 1.02, 'importanceLevel': '1', 'level': 1, 'sourceFrom': '0', 'materialId': 2685, 'productionPlaceCode': 'CD0006', 'deliveryAddress': '6', 'passRatio': '5', 'craftCode': 'GY0001113', 'craftName': '工艺6', 'craftSubType': '6', 'type1': '0', 'type2': '1', 'type3': '0' } ] // es6 将数组中相同的materialCode中相同的craftCode对象打印出来 提示materialCode下的craftName 存在相同数据内容:const craftCodeMap = new Map(); // 用于存储materialCode和对应的craftCode对象
data.forEach((item) => { const { materialCode, craftCode, craftName } = item;
if (craftCodeMap.has(materialCode)) {
const craftCodeObj = craftCodeMap.get(materialCode);
if (craftCodeObj[craftCode]) {
craftCodeObj[craftCode].push(craftName);
} else {
craftCodeObj[craftCode] = [craftName];
}
} else {
const craftCodeObj = { [craftCode]: [craftName] };
craftCodeMap.set(materialCode, craftCodeObj);
}
});
// 打印出materialCode下的相同craftCode对象
craftCodeMap.forEach((craftCodeObj, materialCode) => {
console.log(materialCode: ${materialCode});
Object.keys(craftCodeObj).forEach((craftCode) => {
if (craftCodeObj[craftCode].length > 1) {
console.log(craftCode: ${craftCode});
console.log(craftNames: ${craftCodeObj[craftCode].join(', ')});
}
});
});
原文地址: http://www.cveoy.top/t/topic/pjd5 著作权归作者所有。请勿转载和采集!