You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于将数组转换为自定义格式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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:01:54