Угловая фильтрация данных по идентификатору

#angular #typescript

#угловая #typescript

Вопрос:

У меня есть некоторые данные в проекте angular, которые я хочу использовать вместо базы данных, поскольку данных очень мало … около 50 идентификаторов с 5 полями…вот данные:

 mydata = [

  {
    "id": 3,
    "active": 1,
    "title": "Title 1",
    "text": "this is some text from 3"
  },
  {
    "id": 31,
    "active": 1,
    "title": "Title 1",
    "text": "this is some text from 31"
  },
  {
    "id": 11,
    "active": 1,
    "title": "Title 1",
    "text": "this is some text for 11"
  },
  {
    "id": 21,
    "active": 1,
    "title": "Title 1",
    "text": "this is some text from 21"
  }

]
  

Тогда у меня есть метод:

 getDataText(id) {
    // code to get the text of the data with the selected id
    // do it should get me the data (in this case the text from id 11) 
}
  

Затем в component.html файл, который у меня есть:

 <button (click)="getDataText(11)">Get Data by Id</button>
  

Как я могу это сделать?

Комментарии:

1. сохраните дополнительный массив, в котором хранятся отфильтрованные данные

2. вы можете использовать оператор фильтра: this.mydata.filter(x=>x.id== 11)

Ответ №1:

Попробуйте это:

 getDataText(id) {
    let findedData = this.myData.find(i => i.id === id);
    if (typeof findedData === 'undefined') {
       return null;
    }
    return findedData;
} 
  

Обратите внимание, если с условием ничего не найдено, результат будет undefined .

Ответ №2:

Это должно работать:

getDataText(id) {
const result = this.mydata.filter(x => x.id === id);
return resu<
}

Ответ №3:

Ваш getDataText должен выглядеть так:

 getDataText(id) {
  const data = myData.find(x => x.id === id);
  return data ? data.text : `Cannot find data with id ${id}`;
}
  

Вы могли бы даже разделить на два метода:

 getDataById(id) {
  return myData.find(x => x.id === id);
}

getDataText(id) {
  const data = this.getDataById(id);
  return data ? data.text : `Cannot find data with id ${id}`;
}
  

Ответ №4:

 getDataText = id => (this.myData.find(i => i.id === id) || {}).text;
  

Это вернет текст элемента с заданным идентификатором или неопределенный, если нет элемента с заданным идентификатором.

Ответ №5:

 public result = "Get Data by Id";
public getDataText(id) {
  const reqObj = this.mydata.find(item => item.id === id);
  this.result = reqObj ? reqObj.text : 'nothing found';
}


<button (click)="getDataText(11)">{{result})</button>
  

Здесь вы можете увидеть мой пример