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