开发者问题收集

Javascript find() 方法导致我的函数崩溃

2020-07-30
229

我试图弄清楚当我发送一个对象中没有的数字时,如何让我的函数返回 false。

const getUnitColor = (unitNumber: any): any => {
    const color = getColor.unit.find((unit: any) => {
      return unit.number === parseInt(unitNumber);
    }).unitColor[0].color;
    if (color) {
      return '#' + color;
    } else {
      return false;
    }
  };
  
  console.log(getUnitColor("1"))

  console.log(getUnitColor("0")) // should return false

我收到的第二个控制台日志的错误是“Uncaught TypeError:无法读取未定义的属性‘unitColor’”,而它应该返回 false。

JS Fiddle 有 1 个我传递的示例数据 https://jsfiddle.net/jdhax4y9/8/

2个回答

您可以使用 可选链接运算符 ?.

?.unitColor[0].color;

或分配 find 的结果并返回该值。

const color = getColor.unit.find((unit: any) => {
  return unit.number === parseInt(unitNumber);
});

if (color) {
  return '#' + color.unitColor[0].color;
} else {
  return false;
}
Nina Scholz
2020-07-30

希望这个有效:

const getUnitColor = (unitNumber) => {
    const foundColor = getColor.unit.find(function(unit){
      return unit.number === parseInt(unitNumber);
    })
    if (foundColor) {
      return '#' + foundColor.unitColor[0].color;
    } else {
      return false;
    }
 }
ubinatus
2020-07-30