Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的重复代码_Javascript_Duplicates - Fatal编程技术网

JavaScript中的重复代码

JavaScript中的重复代码,javascript,duplicates,Javascript,Duplicates,下面是如何删除JS中的重复代码以向类解释的好例子吗? 有人能给我一个更好的,可能涉及其他角度,以及如何改善这一点 let employees = [{ name: 'Paul', type: 'Manager' }, { name: 'Rich', type: 'Developer' }, { name: 'Rob', type: 'Cleaner' }, { name: 'Chris', type: 'De

下面是如何删除JS中的重复代码以向类解释的好例子吗? 有人能给我一个更好的,可能涉及其他角度,以及如何改善这一点

let employees = [{
    name: 'Paul',
    type: 'Manager'
  },
  {
    name: 'Rich',
    type: 'Developer'
  },
  {
    name: 'Rob',
    type: 'Cleaner'
  },
  {
    name: 'Chris',
    type: 'Developer'
  }]

var findManager = function(){
  employees.forEach(function(person){
    if (person.type == 'Manager') {
      console.log(person.name);
    }
  })
}
var findCleaner = function(){
  employees.forEach(function(person){
    if (person.type == 'Cleaner') {
      console.log(person.name);
    }
  })
}
var findDeveloper = function(){
  employees.forEach(function(person){
    if (person.type == 'Developer') {
      console.log(person.name);
    }
  })
}
//代码重构如下

var findParticularEmployment = function(employment){
  employees.forEach(function(person){
    if (person.type == employment){
      console.log(person.name);
    }
  })
}

var findDeveloper = function(){
  return findParticularEmployment('Developer')
}

var findManager = function(){
  return findParticularEmployment('Manager')
}

var findCleaner = function(){
  return findParticularEmployment('Cleaner')
}

findManager()
findCleaner()
findDeveloper()
试试这个:

var findEmployee = function(employeeType) {
  employees.forEach(function(person){
    if (person.type == employeeType) {
      console.log(person.name);
    }
  })
}

findEmployee('Developer');
findEmployee('Cleaner');
findEmployee('Manager');

您可以使用
{type:[names]}
创建一个对象,然后使用type作为键获取名称数组

let employees=[{
名字:'保罗',
键入:“经理”
}, {
姓名:'富',
类型:“开发者”
}, {
姓名:“Rob”,
类型:“清洁剂”
}, {
姓名:'克里斯',
类型:“开发者”
}]
var obj=雇员。减少(功能(r,e){
r[e.type]=(r[e.type]| |[]).concat(e.name)
返回r
}, {});
控制台日志(对象管理器)

console.log(obj.Developer)
对于这个特定的用例,最好询问@建议的重构很好。当然。虽然在找到员工后运行的功能也可能需要重构;我只想返回person。但是更容易出现拼写错误/大小写问题的是,枚举findeEmployee(Employee.Developer)会减轻这一问题。这看起来如何@AlexK.?
var Employee={Developer:“Developer”,Cleaner:“Cleaner”}@AlexK。谢谢这本身不是重复吗?而且当我刚刚在控制台中运行它们时也是如此。Employee.developersssss和“developersssss”它们都给出了相同的结果…(即,对象一没有给我更多关于错误的通知)