【发布时间】:2020-12-06 03:02:54
【问题描述】:
我正在编写一个节点程序,我在其中输入一个 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时它会搜索,而当你输入一个查询(属性)时它会搜索。
如何避免代码重复?
【问题讨论】:
-
您不需要用
Object.entries(...)包裹searchById。这是一个数组,你可以检查if (searchById.length === 0)。但是关于重复,写一个函数,在两个地方都调用它。
标签: javascript node.js arrays performance object