我在下面使用array.find,当在数组中找到itemScan值时,它会返回BreakdownPalletID。如果找不到,我的应用程序将返回一个 “无法读取未定义的属性细分索引”。用户输入itemScan,因此我想要这个行为,然后向用户表示未找到该字符串。我该如何处理这个未定义的错误?
let palletID = this.transferPalletBreakdownData.Sku.find(x => x.sku == this.itemScan).breakdownPalletID
console.log(palletID);
答案 0 :(得分:0)
Array.prototype.find()
方法将在不存在某项的情况下返回null,否则将返回预期的项。因此,只需添加null
检查就足以消除错误。
const itemFound = this.transferPalletBreakdownData.Sku.find(x => x.sku == this.itemScan)
let palletID = itemFound && itemFound.breakdownPalletID
console.log(palletID);
您想要基于匹配条件的多个项目,那么我们需要使用filter
而不是find().
const matches = this.transferPalletBreakdownData.Sku.filter(x => x.sku == this.itemScan)
const items = matches.map(item => itemFound.breakdownPalletID)
console.log(items)
答案 1 :(得分:0)
尝试以下代码。
const sku = this.transferPalletBreakdownData.Sku.find(x => x.sku == this.itemScan);
if (sku) {
console.log(sku.breakdownPalletID);
} else {
console.log('No SKU');
}
答案 2 :(得分:0)
使用逻辑或运算符||
:
let palletID = (this.transferPalletBreakdownData.Sku.find(x => x.sku == this.itemScan) || {}).breakdownPalletID;
console.log(palletID);