如果array.find返回“undefined”,我该如何为变量设置默认值。
以下是导致问题的行。在某些情况下,这个变量会被填充,但在其他情况下,它不会被填充,在这种情况下,我希望它默认为0。
this.statistics.creditAmount = response.data.find(t => t.paymentType == 'RF' && t.status == 1).amount || 0;
如果array.find返回“undefined”,我该如何为变量设置默认值。
以下是导致问题的行。在某些情况下,这个变量会被填充,但在其他情况下,它不会被填充,在这种情况下,我希望它默认为0。
this.statistics.creditAmount = response.data.find(t => t.paymentType == 'RF' && t.status == 1).amount || 0;
我看到这个问题已经被回答了,但我认为我可以做出一些贡献
const { amount = 0 } = response.data.find(t => t.paymentType === 'RF' && t.status === 1) || {};
this.statistics.creditAmount = amount;
或者您可以使用一个reducer:
this.statistics.creditAmount = response.data.reduce((amt, t) => t.paymentType === 'RF' && t.status === 1 ? t.amount : amt, 0);
当reducer遍历整个数组时,会使用更多的时钟周期,而Array.prototype.find
则在找到第一个匹配项后停止。这也可能导致结果有所不同,因为reducer的编写方式是取匹配的最后一项。
array.find
返回undefined
的情况,您正在访问.amount
中的undefined
。您可以通过添加保护来解决它:const credit = response.data.find(t =>
t.paymentType == 'RF' && t.status == 1);
this.statistics.creditAmount = credit ? credit.amount : 0;
const
getAmount = ({ amount = 0 } = {}) => amount,
credit = getAmount(response.data.find(t => t.paymentType == 'RF' && t.status == 1));
const response = {data: []};
const _try = (func, fallbackValue) => {
try {
var value = func();
return (value === null || value === undefined) ? fallbackValue : value;
} catch (e) {
return fallbackValue;
}
}
const result = _try(() => response.data.find(t => t.paymentType == 'RF' && t.status == 1).amount, 0);
console.log(result);
这篇文章最初是由Tocqueville作为这个答案的一部分编写的。
(response.data.find(t => t.paymentType == 'RF' && t.status == 1) || { amount : 0 }).amount
。但是,使用if-else语句或三目运算符会更易读(在我看来)。 - adiga