javascript - 是否有一种惯用的 Javascript 方法可以避免为失败的 `Array.find()` 提供默认值?
问题描述
我有用于动态创建对象的工作代码:
// dummy sources
const departments = [
{ code: 'DA', title: 'Department A' },
{ code: 'DB', title: 'Department B' },
{ code: 'DC', title: 'Department C' },
{ code: 'DD', title: 'Department D' },
]
const reviewers = ['Department A','Pub Lunches','Department C','Department D']
const validationObject = {}
// actual code
reviewers.forEach( (reviewer, index) => {
const dept = departments.find( dept => dept.title === reviewer) || { code: reviewer.replace(/[ ]/g, '_').replace(/[/W]/g, '') }
validationObject[dept.code.toLowerCase()+'_reviewer'] = {blah:'blah'}
})
console.log(validationObject)
code
它可以工作,但是在抓取未定义结果的元素时(当部门中没有匹配的元素时)创建一个虚拟对象只是为了克服错误看起来很尴尬。
有没有我想念的更惯用的方式来做到这一点?
解决方案
在 ES6 中应该是这样的
const dept = {
code: reviewer.replace(/[ ]/g, '_').replace(/[/W]/g, ''),
...departments.find( dept => dept.title === reviewer)
}
推荐阅读
- mysql - 计算与 2 个枚举列相关的平均值
- reactjs - 从 redux 获得第一个响应后如何调用支持的 API?
- r - 我基本上试图运行一个模拟循环,从我的储蓄账户金额中减去生活费用
- mysql - 如何根据源列值的长度从第二个连接表中选择可以连接到两列中的任何一列的行
- java - Google 应用引擎 Maven 原型 HelloWorld 端点项目
- c++ - 迭代器的模板参数:函数在调用时推断类型?
- java - 如何在viewpager中显示片段之间的高程阴影?
- python - 无法使用 python 和 opencv 保存视频
- python - Python3:如何显示长时间运行的黑盒函数的“秒表”样式时间
- rust - Rust 中具有特征的对象的泛型类型转换