Фильтрация данных с использованием id

#javascript #reactjs #lodash

#javascript #reactjs #Lodash

Вопрос:

     [
      {
        "acronym": "VMF",
        "defaultValue": "Video amp; Audio Management Function",
        "description": "This is defined as the Video and/or Audio Management functionality that can be performed on a Digital Item. The Video amp; Audio Management functions that will exist on the HDEM platform are as follows:n· CLIPn· REDACTn· THUMBNAILn· STILL IMAGEn· AMALGAMATION",
        "id": "5caddba33a87fd7fa5ee601c",
        "name": "Video amp; Audio Management Function",
        "updatedBy": " ",
        "updatedDate": "2019-04-07T00:00:00Z"
      },
      {
        "acronym": "",
        "defaultValue": "Url Downloadable",
        "description": "Admin configurable header to denote whether the Digital Item/Data within a URL either via Prosecution Readiness or Assign Digital Data can be downloaded.",
        "id": "5caddba33a87fd7fa5ee6098",
        "name": "Url Downloadable",
        "updatedBy": " ",
        "updatedDate": "2019-04-07T00:00:00Z"
      }]
  

У меня есть этот образец json, и мне нужны данные, связанные с одним идентификатором, как я должен получить это в react

 InfoDescription:_.filter(response, (i) => { return i.id === "passing id here"})
  

Используя это, но не работает

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

1. почему бы не dataToFilter.filter(item => item.id === «передаете здесь удостоверение личности?»)

2. пожалуйста, поделитесь ошибкой с консоли или какими-либо подробностями о том, что не работает?

3. Он отлично работает в скрипке .

4. Я также выполнил этот фрагмент кода, и он работает нормально.

Ответ №1:

вы можете попробовать так

 let dataToBeFilter=[
  {
    "acronym": "VMF",
    "defaultValue": "Video amp; Audio Management Function",
    "description": "This is defined as the Video and/or Audio Management functionality that can be performed on a Digital Item. The Video amp; Audio Management functions that will exist on the HDEM platform are as follows:n· CLIPn· REDACTn· THUMBNAILn· STILL IMAGEn· AMALGAMATION",
    "id": "5caddba33a87fd7fa5ee601c",
    "name": "Video amp; Audio Management Function",
    "updatedBy": " ",
    "updatedDate": "2019-04-07T00:00:00Z"
  },
  {
    "acronym": "",
    "defaultValue": "Url Downloadable",
    "description": "Admin configurable header to denote whether the Digital Item/Data within a URL either via Prosecution Readiness or Assign Digital Data can be downloaded.",
    "id": "5caddba33a87fd7fa5ee6098",
    "name": "Url Downloadable",
    "updatedBy": " ",
    "updatedDate": "2019-04-07T00:00:00Z"
  }]



let filteredData=dataToBeFilter.filter(obj=>obj.id=="5caddba33a87fd7fa5ee6098")

console.log(filteredData)

    

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

1. Спасибо, но когда я пытаюсь показать значение по умолчанию из данных, это ничего не дает, я использую this.setstate({ data:filteredData)} и пытаюсь отобразить data.defaultValue

Ответ №2:

Я не использую Lodash.

Если вы просто ищете один конкретный идентификатор в массиве, я бы сделал это, используя собственный find метод, подобный этому. Если вы хотите получить несколько замените find на filter .

 const getById = arr => id => arr.find(x => x.id === id)
  

Ответ №3:

При использовании вашей функции фильтра произошла синтаксическая ошибка. Первым параметром должна быть функция, которая возвращает логическое значение, определяющее, следует ли включать элемент в новый возвращаемый массив.

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

1.Синтаксис — _.filter(collection, [predicate=_.identity]) документация