javascript - 如何避免在javascript中重复代码?
问题描述
我正在编写一个节点程序,在其中输入一个 id(必需)和一个属性(可选),并且该函数遍历对象数组,直到找到具有相同输入 id 和/或属性的对象。
到目前为止,我有这个并且它有效:
if(id && query === undefined){
let searchById = employeesObj.filter(employee => {
return employee.id == id
})
if(Object.entries(searchById).length === 0){
console.log('This employee doesn\'t exist')
return
}
console.log('Employee information: \n', searchById)
}
if(query){
let searchById = employeesObj.filter(employee => {
return employee.id == id
})
if(Object.entries(searchById).length === 0){
console.log('This employee doesn\'t exist')
return}
let obj = searchById[0]
if(obj.hasOwnProperty(query)){
console.log(obj[query])
}else{
console.log('input query doesn\'t exist')
}
}
})
可以看到,这部分功能是一样的:
let searchById = employeesObj.filter(employee => {
return employee.id == id
})
if(Object.entries(searchById).length === 0){
console.log('This employee doesn\'t exist')
return
}
一种是在您输入 id 时进行搜索,另一种是在您输入查询(属性)时进行搜索。
如何避免代码中的重复?
解决方案
通常,如果您必须多次运行代码,则将其放入一个函数中。但是,修复代码重复的更好方法是首先避免重复该事情。您可以通过在开始时仅执行一次 ID 搜索来执行此操作,并searchById
在检查查询时保留结果:
let searchById = employeesObj.filter(employee => {
return employee.id == id
})
if(Object.entries(searchById).length === 0){
console.log('This employee doesn\'t exist')
return
}
if(query){
let obj = searchById[0]
if(obj.hasOwnProperty(query)){
console.log(obj[query])
} else {
console.log('input query doesn\'t exist')
}
} else {
console.log('Employee information: \n', searchById)
}
推荐阅读
- c# - 如何使用 Microsoft bot 框架通过 facebook messenger (C#) 向用户发送音频
- flask - 烧瓶如何使数据库查询引用保持最新
- java - 带有类元素的java队列
- rotation - 如何让乌龟绕着一个点转
- mongodb - @query 注释在 spring boot 中不适用于 hibernate-ogm 和 mongodb
- android - 数据未更改时调用 Android ViewModel onChanged
- android - retrofit-2 - 在将图像和音频上传到 aws 服务器时获取 403 响应代码
- ruby-on-rails - 每个 current_user Rails
- android - 验证应用内购买
- nlog - 使用 NLog 登录多个表