#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. Спасибо. Этот ответ также правильный и решил мою проблему.