#javascript #reactjs
#javascript #reactjs
Вопрос:
Проблема в filter () по массиву объектов, мне нужно проверить, имеет ли currently index(object)
массив свойство со значением isTransffered: false
.
Вот как я использую функцию filter:
let filteredResults = allResults
// isTransferred --> coming from state and have value "false"
if (isTransferred amp;amp; isTransferred !== 'all') {
filteredResults = filteredResults.filter(
res => res.isTransfer === isTransferred
)
}
filteredResults
это массив объектов — вот первый индекс массива:
0:
accountNumber: "8787986"
isTransfer: true
jurisdiction: "AK"
lineOfBusiness: "wc"
Мне нужно проверить, является ли isTransfer ложным.
Заранее спасибо.
Комментарии:
1.
res => res.isTransfer === !isTransferred
?2. Возможно, это условие в состоянии IF является проблемой: (isTransferred amp;amp; isTransferred !== ‘all’) isTransferred равно false
3. Можете ли вы, пожалуйста, рассказать, что такое
typeof(isTransferred)
? если это так,boolean
тогда вы должны записать условие какif (isTransferred.toString() amp;amp; isTransferred.toString() !== 'all') {
.4. isTransferred может быть: true / false или ‘all’ Мне нужно выполнить фильтрацию по массиву на основе isTransferred array, если возможно, вернуть все объекты из массива, которые имеют istransferred значение false.
Ответ №1:
Проблема заключается в вашем условии, если
if (isTransferred amp;amp; isTransferred !== 'all') {
// this will not be executed if isTransferred is false
filteredResults = filteredResults.filter(
res => res.isTransfer === isTransferred
)
}
Просто напишите это как
if (isTransferred !== 'all') {
filteredResults = filteredResults.filter(
res => res.isTransfer === isTransferred
)
}
Ответ №2:
Если внутри filteredResults
вам нужно иметь все объекты, обладающие этим свойством isTransfer === false
, то у вас проблема с filter()
обратным вызовом.
Если вы введете IF
оператор, то isTransferred
равно true
. Хотя в filter()
обратном вызове вы пишете: res => res.isTransfer === isTransferred
, что на обычном языке означает «возьмите записи, свойство которых isTransfer
равно isTransferred
«.
Хотя, поскольку мы находимся в IF
, isTransferred
равно true
! Итак, вы просто берете записи, которые имеют isTrasnfer
свойство, равное true
.
Решение: вам следует написать res => res.isTransfer !== isTransferred
, наш более простой res => res.isTransfer === false