首页 > 解决方案 > 如何避免在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 时进行搜索,另一种是在您输入查询(属性)时进行搜索。

如何避免代码中的重复?

标签: javascriptnode.jsarraysperformanceobject

解决方案


通常,如果您必须多次运行代码,则将其放入一个函数中。但是,修复代码重复的更好方法是首先避免重复该事情。您可以通过在开始时仅执行一次 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)
}

推荐阅读