qq_遁去的一_1
我为你准备了一个小功能:根据您在评论中提出的问题,连同response_message字符串的测试用例,我编辑了代码片段以包含多个要测试的用例。const inputs = [ [{ "response_code": 1, "response_message": [{ "a": 1000, "b": 1000001, "c": 10000002 }] }, { "response_code": 1, "response_message": [{ "p": 1000, "q": 1000001, "r": 10000002 }] } ], [{ "response_code": 1, "response_message": [{ "a": 1000, "b": 1000001, "c": 10000002 }] }, { "response_code": 1, "response_message": 'No data' } ], [{ "response_code": 1, "response_message": 'No data' }, { "response_code": 1, "response_message": 'No data' } ]]const getGroupedArr = (arr) => { const codeMap = arr.reduce((cMap,obj) => { let existingMessageArr = cMap.get(obj.response_code); let arrayToAdd = Array.isArray(obj.response_message) ? obj.response_message : []; if(existingMessageArr){ existingMessageArr.push(...arrayToAdd); } else { cMap.set(obj.response_code,arrayToAdd); } return cMap; },new Map()); const iterator = codeMap[Symbol.iterator](); const resultArr = []; for (let item of iterator) { resultArr.push({ response_code: item[0], response_message: item[1] }) } return resultArr;}inputs.forEach((inputArr,index) => { console.log(`Result for input ${index+1}`,getGroupedArr(inputArr));})请注意,我Map在 JS 中使用了大多数人更喜欢对象的位置,因为 JS 中的映射是可迭代的,但是对于一个对象,我不得不做一个额外的Object.keys()步骤,所以这使得它比对象方法稍微更有效,虽然有点冗长.另请注意,在第三种情况下,当具有特定对象的对象没有response_code任何数据时,结果将是一个空数组而不是字符串。在像 JS 这样的弱类型环境中,保持某种类型一致性始终是一个好习惯(这实际上使得 'No data' 的输入值response_code并不理想),否则您可能需要在任何地方进行类型检查(比如在编辑的函数中)在上面的片段中)。当具有相同的对象response_code存在于两个不同的数组中时(两个输入数组可以简单地合并为一个),可以在评论中提到的约束中使用相同的函数:const inputArr1 = [{ "response_code": 1, "response_message": [{ "a": 1000, "b": 1000001, "c": 10000002 }] }]const inputArr2 = [{ "response_code": 1, "response_message": [{ "p": 1000, "q": 1000001, "r": 10000002 }] }]const getGroupedArr = (arr) => { const codeMap = arr.reduce((cMap,obj) => { let existingMessageArr = cMap.get(obj.response_code); let arrayToAdd = Array.isArray(obj.response_message) ? obj.response_message : []; if(existingMessageArr){ existingMessageArr.push(...arrayToAdd); } else { cMap.set(obj.response_code,arrayToAdd); } return cMap; },new Map()); const iterator = codeMap[Symbol.iterator](); const resultArr = []; for (let item of iterator) { resultArr.push({ response_code: item[0], response_message: item[1] }) } return resultArr;}console.log(getGroupedArr([...inputArr1,...inputArr2]));