Array.Find如果在Array中找不到字符串则失败

时间:2019-05-31 03:18:36

标签: javascript typescript

我在下面使用array.find,当在数组中找到itemScan值时,它会返回BreakdownPalletID。如果找不到,我的应用程序将返回一个 “无法读取未定义的属性细分索引”。用户输入itemScan,因此我想要这个行为,然后向用户表示未找到该字符串。我该如何处理这个未定义的错误?

 let palletID = this.transferPalletBreakdownData.Sku.find(x => x.sku == this.itemScan).breakdownPalletID
      console.log(palletID);

3 个答案:

答案 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);