Как получить данные второго уровня из многомерного массива в Angular 7 Ionic 5 - PullRequest
0 голосов
/ 26 сентября 2019

Я новичок в Angular и пробую свои силы в многомерных массивах.Я успешно извлекаю и отображаю данные 1-го уровня в моем многомерном массиве json.Тем не менее, я не могу найти правильный синтаксис для извлечения данных из второго слоя массива.Я рассмотрел довольно много решений для многомерных массивов, но ни одно из них не соответствует тому, что я пытаюсь сделать.Я создал служебный компонент и добавил в него свой код.Это то, что я до сих пор:

Определение сжатого массива (фактический массив имеет гораздо больше элементов и полей):

private _fundraisers: Fundraiser[] = [
    {
      fundId: 'f1',
      fundTitle: 'The happy fund',
      items: [
        {
          itemId: '66', 
          itemTitle: 'sixTea6'
        },
        {
          itemId: '88', 
          itemTitle: 'eighTea8',
        }]
    }
  ];

У меня есть следующая функция для извлечения элемента сверхумассив уровней, использующий переменную fundId.

getFundraiser(fundId: string) {
    return {...this._fundraisers.find(fundraiser => {
      return fundraiser.fundId === fundId;
    })};
  }

Эта функция возвращает обязательный элемент и все «элементы» для fundId.Теперь, когда пользователь выбирает один из «предметов», я хочу вернуть все детали только для этого предмета.Поэтому, если я отображаю запись для «f1» и пользователь выбирает пункт «66», я хочу передать «f1» и «66» функции и вернуть подробности для «f1 / 66».Это то, что я пытался безуспешно.

  getFundraiserItem(fundId: string, itemId: string) {
    this._fundraisers.find(fundraiserItem => {       
      if (fundraiserItem.fundId === fundId) {
        console.log(fundraiserItem[0][fundId][0].itemId[0].itemId);
      }
    });
  }

Очевидно, что я использую только console.log для тестирования своего кода.Таким образом, console.log будет заменен каким-либо возвратом.Я попытался собрать этот код вместе, основываясь на других решениях по переполнению стека.Но я, вероятно, далеко от цели.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019
getFundraiserItem(fundId: string, itemId: string) {
  var fundraiser = this._fundraisers.find(fundraiser => fundraiser.fundId === fundId);
  var item = fundraiser.items.find(item => item.itemId === itemId);
  return item;
}
0 голосов
/ 26 сентября 2019

Не проверено, но я думаю, что вы можете сделать что-то подобное, чтобы получить предмет по fundId & itemId:

    getFundraiserItemById(fundId: string, itemId: string): ItemModelHere | undefined {
 const relevantFundraiser: Fundraiser | undefined = this._fundraiser.find((f) => f.fundId === fundId);
if (!relevantFundraiser || !relevantFundraiser.items) {
return undefined;
}
return relevantFundraiser.items.find((item) => item.itemId === itemId);

}

...