Math.min с картой возвращает NaN на 0 в коллекции - PullRequest
1 голос
/ 30 сентября 2019

Я работаю над фрагментом кода, где мне нужно отобразить минимальные и максимальные значения в коллекции. Это работало нормально, пока я не ввел 0 значений в коллекцию, которая теперь возвращает NaN. Если я запустил функцию без значений 0, она будет работать так, как задумано.

const minVal = Math.min(...this.wells.map(d => Number(d.valueText) || Number(d.value)));
const maxVal = Math.max(...this.wells.map(d => Number(d.valueText) || Number(d.value)));

Так что, если у нас есть значения от 2 до 0,00003 - 0, минимальное значение должно быть 0, а максимальное значение должно быть 2.

Теперь, если это было, скажем, от 10 до 0,000000001, это будет работать, или если у нас будет от 1 до 10000, это будет работать.

let wells = [];

wells.push({
  posCol: 0,
  posRow: 0,
  valueText: 2
});
wells.push({
  posCol: 1,
  posRow: 0,
  valueText: 4
});
wells.push({
  posCol: 2,
  posRow: 0,
  valueText: 0
});

const minVal = Math.min(...wells.map(d => Number(d.valueText) || Number(d.value)));
const maxVal = Math.max(...wells.map(d => Number(d.valueText) || Number(d.value)));

console.log(minVal);
console.log(maxVal);

Ниже я добавлю пример, который будет работать

let wells = [];

    wells.push({
      posCol: 0,
      posRow: 0,
      valueText: 2
    });
    wells.push({
      posCol: 1,
      posRow: 0,
      valueText: 4
    });
    wells.push({
      posCol: 2,
      posRow: 0,
      valueText: 1
    });

    const minVal = Math.min(...wells.map(d => Number(d.valueText) || Number(d.value)));
    const maxVal = Math.max(...wells.map(d => Number(d.valueText) || Number(d.value)));

    console.log(minVal);
    console.log(maxVal);

РЕШЕНИЕ ДЛЯ ЛЮБОГО, КОТОРЫЙ ПРОХОДИТ В ЭТОМ ПРОБЛЕМЕ Ref @VLAZ Пояснение

    let wells = [];

    wells.push({
      posCol: 0,
      posRow: 0,
      valueText: 2
    });
    wells.push({
      posCol: 1,
      posRow: 0,
      valueText: 4
    });
    wells.push({
      posCol: 2,
      posRow: 0,
      valueText: 0
    });

    const minVal = Math.min(...wells.map(d => Number(d.value) || Number(d.valueText)));
    const maxVal = Math.max(...wells.map(d => Number(d.value) || Number(d.valueText)));

    console.log(minVal);
    console.log(maxVal);

Проблема заключалась в том, что значение 0 оценивалось как ложное и, как таковое, приводило к отступлению, которое в этом случае было неопределенным свойством, которое приводило к NaN. Решение состояло в том, чтобы поменять их.

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