对象内的JS动态对象...遍历

时间:2015-08-26 14:26:49

标签: javascript jquery javascript-objects nested

上下文

我有一组JSON数据存储为对象。我想通过特定属性“分组”此数据。这有效。但后来我希望能够进一步对已经分组的数据进行分组。这是我被卡住的地方。我正在关注的过程可能完全错误,所以如果你有更好的分组方法,并进一步分组JSON数据,请说。

过程

获取data对象,并将其替换为包含groupLevelfilter和新data对象的新对象,依此类推,直到所有分组都已完成。

问题

如何遍历此结构,专门针对最低data对象,创建如下的新分组(我可以这样做),然后将整批作为全新结构返回,用于其余的代码。问题在于保持结构完整,同时能够在最低级别进行更改。

原始数据结构:

Object:
- attr1:"val1"
- attr2:"val2"
- attr3:"val3"
- attr{n}:"val{n}"

分组数据结构:

Object:
- groupLevel:1
- filter:"attr2"
- data:Object:
  - "val2a": Array[18]
    - 0: Object
      - attr1:"val1"
      - attr2:"val2"
      - attr3:"val3"
      - attr4:"val4"
      - attr{n}:"val{y}"
    - 1: Object
    - 2: Object
    - 3: Object
    - {n}: Object
  - "val2b": Array[15]
  - "val2c": Array[6]
  - "val2d": Array[3]
  - "val2e": Array[2]

分组数据结构(猜测,因为我不知道如何进入这个阶段,因此这个问题):

Object:
- groupLevel:2
- filter:"attr2"
- data:Object:
  - "val-hdfgdhdd": Array[20]
  - "val-hdfgddfd": Array[10]
  - "val-hdgggggg": Array[22]
    - groupLevel:1
    - filter:"attr2"
    - data:Object:
      - "val2a": Array[18]
        - 0: Object
          - attr1:"val1"
          - attr2:"val2"
          - attr3:"val3"
          - attr4:"val4"
          - attr{n}:"val{y}"
        - 1: Object
        - 2: Object
        - 3: Object
        - {n}: Object
      - "val2b": Array[15]
      - "val2c": Array[6]
      - "val2d": Array[3]
      - "val2e": Array[2]

我能够进行第1组,但现在我正在尝试对分组数据集进行分组,然后我意识到,如下所示,我每次向下钻取时都会“丢弃”更高级别,所以我得到了我的最低data对象,在我用另一个分组级别替换最终的'data'对象后,我已经丢失了上面的所有级别。但是......我如何保持整个结构并进行新的分组?

当前失败的代码段以深入挖掘此新结构:

if(baseObject['groupLevel']) {
  while (baseObject['groupLevel'] != 1) {
    baseObject['groupLevel']++;
    baseObject = baseObject['data'];
  }
  // once out of the loop, I 'should' be left with a baseObject which I can further group.
} else {
  // baseObject with no grouping, group the data, and store it in the structure shown above, giving it a level of 1.
}

根据用户对不完整结构示例的反馈更新了问题。顺便说一句,我可能完全错了。如果有人能提出更好的方法来分组JSON数据,请说。

0 个答案:

没有答案