@japan123

Как сразу после получения данных найти min и max элемент массива?

  • Вопрос задан
  • 68 просмотров
Решения вопроса 2
rockon404
@rockon404 Куратор тега React
Frontend Developer
const min = res.data.reduce(
  (acc, el) => (acc > el.price ? el.price : acc),
  Infinity
);

const max = res.data.reduce(
  (acc, el) => (acc < el.price ? el.price : acc),
  -Infinity
);

this.setState({ studios: res.data, isLoading: false, min, max });
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега React
Вызов setState пусть будет один, а при вычислении минимума и максимума обращайтесь не к стейту, а к только что полученным данным. Т.е., вместо

this.setState({ studios: res.data, isLoading: false })
this.setState({ max: this.state.studios.reduce((l, e) => (e.price > l.price ? e : l)) });
this.setState({ min: this.state.studios.reduce((l, e) => (e.price < l.price ? e : l)) });

пусть будет

this.setState({
  studios: res.data,
  isLoading: false,
  max: res.data.reduce((l, e) => (e.price > l ? e.price : l), -Infinity),
  min: res.data.reduce((l, e) => (e.price < l ? e.price : l), Infinity),
});

// или, без reduce'ов

const prices = res.data.map(n => n.price);

this.setState({
  studios: res.data,
  isLoading: false,
  max: Math.max(...prices),
  min: Math.min(...prices),
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы