我经常必须将三元运算符传递给依赖于.find()
方法结果的值,因为它在找到值之前返回undefined
:
const getValue = stateDataA => {
let value = stateDataA.find(item => item.name === stateDataB[0]).name;
return value;
}
这通常是"退货";找不到未定义的"的属性"name";。以下是我如何绕过这一点,但我知道这不可能是最佳的:
let value = stateDataA.find(item => item.name === stateDataB[0]) ? stateDataA.find(item => item.name === stateDataB[0]).name : "placeholder";
我的数据通常使用connect()
通过道具传递,并且我将主要组件封装在一个容器中,该容器只在加载状态后加载,所以我认为问题只是find()
我的值所需的时间。感谢您的帮助。
?.
和??
是javascript运算符家族中的新成员,但非常受欢迎:
let a = [{name: 1}, {name: 2}, {name: 3}]
console.log(a.find(x => x.name === 2)?.name ?? 'placeholder')
console.log(a.find(x => x.name === 5)?.name ?? 'placeholder')
尝试item?.name
。这将检查item
是否未定义。如果没有,那么它将跳过以下操作。