Как преобразовать несколько объектов в один массив и посчитать длину объектов в javascript?

#javascript #node.js #arrays #reactjs #object

#javascript #node.js #массивы #reactjs #объект

Вопрос:

У меня есть этот код:

                {bloodStores amp;amp;
                  bloodStores.map((store) => {
                    if (
                      store.status === "Stock" amp;amp;
                      store.blood_component === "Whole Blood" amp;amp;
                      store.blood_group === "O "
                    ) {
                      {
                       {' display the length of objects '}
                      }
                    }
                  })}
  

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

После фильтрации я получил именно то, что мне было нужно, и все это объекты, подобные приведенному ниже коду:

  {
    "donor": "caamir yusuf ali",
    "hb": "18.13",
    "blood_group": "O ",
    "blood_component": "Whole Blood",
    "unit": "500",
    "bag": "K020068931",
    "status": "Stock"
  },
  {
    "donor": "zakariye mohamed adan",
    "hb": "16.71",
    "blood_group": "O ",
    "blood_component": "Whole Blood",
    "unit": "500",
    "bag": "K02059689",
    "status": "Stock"
  },
  {
    "donor": "cabdirashid colaad hassan",
    "hb": "17.55",
    "blood_group": "O ",
    "blood_component": "Whole Blood",
    "unit": "250",
    "bag": "EE559895",
    "status": "Stock"
  }
  

как вы видите, общее количество объектов равно 3, но как мне отобразить это число????

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

1. Это массив объектов, вы можете получить длину, просто .length

Ответ №1:

Сначала вы должны использовать метод filter, чтобы получить новый массив с интересующим вас объектом, а затем использовать свойство length массива.

 \ before you return from your component, filter out the array
const filteredBloodStores = bloodStores.filter(store => (store.status === "Stock" 
    amp;amp; store.blood_component === "Whole Blood" 
    amp;amp; store.blood_group === "O "));

\ and in your render, you can get length of that array
filteredBloodStores.length

  

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

1. Я использовал его в области рендеринга. Спасибо, это решило мою проблему

Ответ №2:

Вы должны выполнить фильтрацию заранее, а затем вы можете просто отобразить отфильтрованные элементы или длину результирующего массива. В jsx этого делать не нужно:

 const availableZeroPositiveWholeBlood = bloodStores.filter(
    ({status, blood_component, blood_group}) => (
        status === "Stock" 
        amp;amp; blood_component === "Whole Blood" 
        amp;amp; blood_group === "O "
    )
)

return <p>{availableZeroPositiveWholeBlood.length}</p>;
  

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

1. Спасибо. Этот ответ также правильный и решил мою проблему.