关于将数组转换为自定义格式JSON Array的技术咨询
将自定义数组结构转换为指定JSON格式的解决方案
首先,先把你提供的原始数据整理成语法正确的格式(补全了逗号和字符串引号,符合JS语法要求):
const rawData = [ {id:10, job:"computer", place:"near"}, {id:11, job:"computer2", place:"near2"}, [ {id:14, job:"computer", place:"near3"}, {id:11, job:"computer2", place:"near2"}, {id:10, job:"computer2", place:"near2"} ], {id3:101, jobr:"computerr", placer:"nearr"}, [ {id3:14, jobr:"computerr", placre:"nearrrr"} ] ];
接下来分两种场景给你实现方案:
场景一:原始数据结构固定(分组位置确定)
如果你的原始数据总是按照「若干对象 + 一个子数组」的模式重复,而且只有两组,直接按位置提取数据即可:
var arr = []; // 构建grid1组 arr.push({ id: 'grid1', all: rawData[2], // 取第一个子数组作为all change: [rawData[0], rawData[1]] // 取前两个独立对象作为change }); // 构建grid2组 arr.push({ id: 'grid2', all: rawData[4], // 取第二个子数组作为all change: [rawData[3]] // 取第四个独立对象作为change }); // 查看转换结果 console.log(arr);
场景二:原始数据结构动态(支持多组扩展)
如果后续可能增加更多分组,用动态循环的方式更灵活,自动识别对象和子数组来分组:
var arr = []; let currentGroup = null; let groupCount = 1; // 遍历原始数据,区分对象和数组 $.each(rawData, function(_, item) { if (Array.isArray(item)) { // 遇到子数组,把它设为当前组的all,然后将组加入目标数组 currentGroup.all = item; arr.push(currentGroup); currentGroup = null; } else { // 遇到独立对象,初始化或追加到当前组的change if (!currentGroup) { currentGroup = { id: `grid${groupCount++}`, all: [], change: [] }; } currentGroup.change.push(item); } }); // 输出最终结果 console.log(arr);
和你现有代码的结合说明
你当前的代码片段是用来生成键值对映射的:
obj = {}; $.each(cols[0].Values,function(key,value){ obj[value.Value] = value.Display; });
如果你的rawData是从cols数据中提取的,可以先通过类似的循环从cols里取出需要的对象和子数组,再代入上面的转换逻辑中,就能完整实现需求了。
内容的提问来源于stack exchange,提问作者user2049855
相关产品推荐
相关产品推荐

