Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SQL结果转换为嵌套的Javascript对象_Javascript - Fatal编程技术网

将SQL结果转换为嵌套的Javascript对象

将SQL结果转换为嵌套的Javascript对象,javascript,Javascript,我使用Javascript返回SQL结果,如下所示: { machine_class: 'MAN', machine: '001', start: '2020-01-02 18:27:38', end: '2020-01-02 18:30:22', code: 'ready' }, { machine_class: 'CMD', machine: '002', start: '2020-01-02 18:30:22', end: '2020-01-02 18:

我使用Javascript返回SQL结果,如下所示:

{
  machine_class: 'MAN',
  machine: '001',
  start: '2020-01-02 18:27:38',
  end: '2020-01-02 18:30:22',
  code: 'ready'
},
{
  machine_class: 'CMD',
  machine: '002',
  start: '2020-01-02 18:30:22',
  end: '2020-01-02 18:30:53',
  code: 'ready'
},
{
  machine_class: 'CMD',
  machine: '002',
  start: '2020-01-02 18:30:53',
  end: '2020-01-02 18:31:16',
  code: 'delay'
},
{
  machine_class: 'CMD',
  machine: '003',
  start: '2020-01-02 18:31:16',
  end: '2020-01-02 18:31:29',
  code: 'ready'
}
[
  {
    machine_class: "CMD",
    data: [
      {
        machine: "002",
        data: [
          {
            timeRange: ['2020-01-02 18:30:22', '2020-01-02 18:30:53'],
            val: 'ready' 
          },
          {
            timeRange: ['2020-01-02 18:30:53', '2020-01-02 18:31:16'],
            val: 'delay'
          },
          (...)
        ]
      },
      {
        machine: "003",
        data: [...]
      },
      (...)
    ],
  },
  {
    machine_class: "MAN",
    data: [...]
  },
  (...)
]
我需要先按machine_类嵌套结果,然后按如下所示的机器嵌套结果:

{
  machine_class: 'MAN',
  machine: '001',
  start: '2020-01-02 18:27:38',
  end: '2020-01-02 18:30:22',
  code: 'ready'
},
{
  machine_class: 'CMD',
  machine: '002',
  start: '2020-01-02 18:30:22',
  end: '2020-01-02 18:30:53',
  code: 'ready'
},
{
  machine_class: 'CMD',
  machine: '002',
  start: '2020-01-02 18:30:53',
  end: '2020-01-02 18:31:16',
  code: 'delay'
},
{
  machine_class: 'CMD',
  machine: '003',
  start: '2020-01-02 18:31:16',
  end: '2020-01-02 18:31:29',
  code: 'ready'
}
[
  {
    machine_class: "CMD",
    data: [
      {
        machine: "002",
        data: [
          {
            timeRange: ['2020-01-02 18:30:22', '2020-01-02 18:30:53'],
            val: 'ready' 
          },
          {
            timeRange: ['2020-01-02 18:30:53', '2020-01-02 18:31:16'],
            val: 'delay'
          },
          (...)
        ]
      },
      {
        machine: "003",
        data: [...]
      },
      (...)
    ],
  },
  {
    machine_class: "MAN",
    data: [...]
  },
  (...)
]

我能想到的唯一解决方案是复杂而缓慢的,JavaScript中是否有内置的东西可以嵌套这样的对象?

如果使用对象进行索引,那么速度应该不会太慢,输出是否正常

下一行还对源代码进行了索引,以便更好地理解它是如何工作的,因为它是一个数据驱动的算法

var dbInput=[{machine_class:'MAN',machine:'001',start:'2020-01-02 18:27:38',end:'2020-01-02 18:30:22',code:'ready'},{machine_class:'CMD',machine:'002',start:'2020-01-02 18:30:22',end:'2020-01-02 18:30:53',code:'ready'},{machine_class:'CMD',machine:'002',start:'2020-01-02 18:30:53',end:'2020-01-02 18:31:16',code:'delay'},{machine_class:'CMD',machine:'003',start:'2020-01-02 18:31:16',end:'2020-01-02 18:31:29',code:'ready'};
var res=转换(dbInput);
var merge=res.pop();
document.body.innerHTML='var Result='+JSON.stringify(res,null,2)+''+
“
”+ 'var IndexedSource='+JSON.stringify(merge,null,2)+'; 函数转换(dbInput){ var merge={}; for(var r=0;r}
通过一些简单的JS技巧绝对没有办法做到这一点,但如果你在JS对象中使用关联数组,你应该能很快得到结果。如果你满意,请注意upvote或accept下的voting按钮……这太棒了,谢谢,我将能够使用它作为我所有SQL-to-JavaScript的模板。