Фильтр при отображении списка объектов с использованием Reduce - PullRequest
0 голосов
/ 17 января 2020

Я хотел бы отобразить список устройств, но не все из них, поэтому мне нужно иметь какой-то фильтр в моей функции карты.

вот как выглядит моя функция карты

get activities() {
    return this.props.screenProps.store.activities.map((sensor) => {
      return {
        id: sensor.SensorID,
        type: sensor.SensorType,
        timestamp: sensor.EventDate,
        key: sensor.SensorType,
      }
    })
  }

Я хотел бы только вернуть датчик с идентификатором выше 5, поэтому я попробовал это, но это не сработало.

get activities() {
    return this.props.screenProps.store.activities.map((sensor) => {
    if (sensor.SensorID => 5){
    return {
            id: sensor.SensorID,
            type: sensor.SensorType,
            timestamp: sensor.EventDate,
            key: sensor.SensorType,
        }

    }
}

Я прочитал, что сокращение будет способом к go, я пытался заставить его работать, но безуспешно. любая помощь?

1 Ответ

0 голосов
/ 17 января 2020

Предполагая, что SensorID является числом, а не строкой, пожалуйста, попробуйте это

get activities() {
    return this.props.screenProps.store.activities
      // Filter out records for which SensorID is more than or equal to 5.
      .filter(sensor => sensor.SensorID >= 5)
      // Use that filtered array to map it in a new one.
      .map((sensor) => {
      return {
        id: sensor.SensorID,
        type: sensor.SensorType,
        timestamp: sensor.EventDate,
        key: sensor.SensorType,
      }
    })
  }

Если вы хотите использовать сокращение для этого, вы можете попробовать приведенный ниже фрагмент

get activities() {
    return this.props.screenProps.store.activities
      .reduce((acc, sensor) => {
        // Push the element to final array only if the SensorId >= 5
        if (sensor.SensorID >= 5) {
          acc.push({
            id: sensor.SensorID,
            type: sensor.SensorType,
            timestamp: sensor.EventDate,
            key: sensor.SensorType,
          });
        }

        return acc;
      }, []);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...