首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果array.find返回undefined,则ES6/JS指定默认值

如果array.find返回undefined,则ES6/JS指定默认值
EN

Stack Overflow用户
提问于 2019-03-27 03:42:29
回答 3查看 10.6K关注 0票数 10

如果array.find返回'undefined‘,如何为变量设置默认值。

下面这行代码引起了我的问题。在某些情况下,此变量将填充,但在其他情况下,它不会填充,在这种情况下,我希望它缺省为0。

代码语言:javascript
复制
this.statistics.creditAmount = response.data.find(t => t.paymentType == 'RF' && t.status == 1).amount || 0;
EN

回答 3

Stack Overflow用户

发布于 2019-03-27 03:45:59

代码的问题在于,在array.find返回undefined的情况下访问undefined.amount。你可以通过添加一个防护来解决这个问题:

代码语言:javascript
复制
const credit = response.data.find(t => 
  t.paymentType == 'RF' && t.status == 1);

this.statistics.creditAmount = credit ? credit.amount : 0;
票数 5
EN

Stack Overflow用户

发布于 2019-03-27 03:51:12

另一种方法是使用闭包和具有默认对象/值的解构。

代码语言:javascript
复制
const
    getAmount = ({ amount = 0 } = {}) => amount,
    credit = getAmount(response.data.find(t => t.paymentType == 'RF' && t.status == 1));
票数 0
EN

Stack Overflow用户

发布于 2019-03-27 03:55:18

可能的过度杀伤力,但您可以创建并实现一个可重用的空传播方法。

代码语言:javascript
复制
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作为this answer的一部分编写的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55365114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档