簡體   English   中英

如何避免 javascript 中的代碼重復?

[英]How to avoid repetition of code in javascript?

我正在編寫一個節點程序,在其中輸入一個 id(必需)和一個屬性(可選),並且 function 遍歷對象數組,直到找到具有相同輸入 id 和/或屬性的 object。

到目前為止,我有這個並且它有效:

       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 時進行搜索,另一種是在您輸入查詢(屬性)時進行搜索。

如何避免代碼中的重復?

通常,如果您必須多次運行代碼,則將其放入 function 中。 但是,修復代碼重復的更好方法是首先避免重復該事情。 您可以通過在開始時僅執行一次 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)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM