带地图的Math.min返回集合中0的NaN

问题描述 投票:1回答:1

我正在编写一段代码,需要在集合中映射最小值和最大值。在我将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。解决方案是将两者切换。

json typescript aurelia
1个回答
0
投票

针对此问题的所有人的解决方案,请参考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。解决方案是将两者切换。

© www.soinside.com 2019 - 2024. All rights reserved.