如何将含results键的嵌套对象转换为直接数组结构?
嵌套对象中results数组的结构转换方案
你需要将所有层级下testList对象中的results数组直接提取出来,替换原有的testList对象结构。可以通过递归遍历的方式处理嵌套结构,代码实现如下:
实现逻辑
- 定义递归函数,接收需要处理的对象/数组
- 若处理目标是数组,遍历每个元素,对元素中的
testList进行处理 - 若元素的
testList存在results属性,将testList替换为results数组,再递归处理该数组内的元素 - 若
testList无results属性,保持原结构不变
代码示例
var testList = { results: [ { id: 1, testList: { results: [ { id: 11, testList: {} } ] } }, { id: 2, testList: {} } ] }; function transformStructure(data) { // 如果是数组,遍历每个元素处理 if (Array.isArray(data)) { data.forEach(item => { if (item.testList) { // 存在results则替换为数组 if (item.testList.results) { item.testList = item.testList.results; // 递归处理替换后的数组 transformStructure(item.testList); } } }); return data; } // 如果是包含results的对象,先提取数组再处理 else if (data.results) { const transformed = data.results; transformStructure(transformed); return transformed; } return data; } // 执行转换 testList = transformStructure(testList); console.log(testList);
转换后结果
运行上述代码后,testList会变为你期望的结构:
[ { id: 1, testList: [ { id: 11, testList: {} } ] }, { id: 2, testList: {} } ];
内容的提问来源于stack exchange,提问作者Shama Parween
相关产品推荐
相关产品推荐

