Выполните обе условные проверки за один проход. Если цитата верна и , в полях есть совпадающий пользователь или компания для пользователя, pu sh JSX в массив результатов.
const qoutes = this.state.qoutes.reduce(
(quotes, quote, i) => {
if (
quote &&
quote.fields &&
(user === quote.fields.user || user === quote.fields.company)
) {
quotes.push(<QoutesListItem id={i} key={i} qoute={quote} />);
}
return quotes;
},
[] // initial empty quotes result array
);
const quotes = [null, null, null, {
fields: {
user: 'name'
}
}, null, {
fields: {
company: 'name'
}
}];
const user = "name";
const quotesRes = quotes.reduce(
(quotes, quote, i) => {
if (
quote &&
quote.fields &&
(user === quote.fields.user || user === quote.fields.company)
) {
quotes.push(`<QoutesListItem id={${i}} key={${i}} qoute={${quote.fields.user || quote.fields.company}} />`);
}
return quotes;
}, [] // initial empty quotes result array
);
console.log(quotesRes);
К вашему сведению, каждый раз, когда вы видите карту / фильтр или фильтр / карту, это должно быть хорошим показателем для использования функции уменьшения.