Angular / Ionic-如何对来自两个JSON源的数据进行分组?

时间:2019-01-22 16:12:16

标签: json angular typescript ionic-framework grouping

我想将JSON数据分组到Ionic的手风琴列表中。我该如何使用两个JSON源呢?

以前,我仅使用一个JSON成功完成了

我有两个看起来像这样的JSON。 一个:

    {
        {
          "ObjectId": '001',
          "ObjectName": 'Fruits'
        },
        {
          "ObjectId": '002',
          "ObjectName": 'Vegetables'
        }
    }

另一个:

    {
        {
          "Name": 'Apple',
          "Color": 'Red',
          "ObjectId": '001'
        },
        {
          "Name": 'Eggplant',
          "Color": 'Purple',
          "ObjectId": '002'
        },
        {
          "Name": 'Banana',
          "Color": 'Yellow',
          "ObjectId": '001'
        },
        {
          "Name": 'Spinach',
          "Color": 'Green',
          "ObjectId": '002'
        },
        {
          "Name": 'Garlic',
          "Color": 'White',
          "ObjectId": '002'
        },
    }

这是我的预期结果图片: Accordion-List

1 个答案:

答案 0 :(得分:0)

我已经找到了解决方案,但是我不确定我的方法是最好的方法。

这是我的方法:

// GET DATA API
let getObjectApi = this.dataProvider.getObjectUrl();
new Promise(resolve => {
    getObjectApi.subscribe(data => {
      resolve(data);
      this.apiObjectData = data;

      // LOOPING OBJECT DATA
      for (let i = 0; i < this.apiObjectData.length; i++) {
        const objItem = data[i];

        // GET OBJECT ITEM BY ObjectId
        let getObjectItem = this.getObjectItemByObjectId('ObjectId', objItem['ObjectId']);
        // PUSH THE DATA
        this.apiDataResult.push({
          'dataObject': objItem,
          'dataObjectItem' : getObjectItem 
        });
      }
    }, err => {
      console.log(err);
    });
  });

这里是this.getObjectItemByObjectId()方法:

getObjectItemByObjectId(column, value) {
  let result:any = [];
  let dataApi: any = [];

  let getObjectItemApi = this.dataProvider.getObjectItemUrl();
  new Promise(resolve => {
    getObjectItemApi.subscribe(data => {
      resolve(data);
      dataApi = data;
      for (let i = 0; i < dataApi.length; i++) {
        const element = dataApi[i];
        if (element[column] == value) {
          result.push(element);
        }
      }
    }, err => {
      console.log(err);
    });
  });

  return result;
}

结果是这样的:

{
    {
      "dataObject": {
                      "ObjectId": '001',
                      "ObjectName": 'Fruits'
                    },
      "dataObjectItem": {
                            {
                              "Name": 'Apple',
                              "Color": 'Red',
                              "ObjectId": '001'
                            },
                            {
                              "Name": 'Banana',
                              "Color": 'Yellow',
                              "ObjectId": '001'
                            }
                        }
    },
    {
      "dataObject": {
                      "ObjectId": '002',
                      "ObjectName": 'Vegetables'
                    },
      "dataObjectItem": {
                            {
                              "Name": 'Eggplant',
                              "Color": 'Purple',
                              "ObjectId": '002'
                            },
                            {
                              "Name": 'Spinach',
                              "Color": 'Green',
                              "ObjectId": '002'
                            },
                            {
                              "Name": 'Garlic',
                              "Color": 'White',
                              "ObjectId": '002'
                            }
                        }
    }
}

仅此而已!

  

如果有比我的方法更好的方法,请告诉我!很抱歉,如果出现问题。预先谢谢你!