2015-02-09 70 views
1

我是javascript新手。我想立即过滤所有Employee对象,并返回等于或超过300个工资的名称。然后我想将这些结果存储到一个数组中。我不知道如何在所有对象上调用方法filterSalaries()。请帮帮我。如何一次调用同一构造函数中的所有对象?

var EmployeeBlueprint = { 

    all_info: function() { 
     console.log("Employee: " + this.name + " has a salary of $" + this.salary + "."); 
    }, 
    isMale: function() { return this.gender == "Male"; }, 
    isFemale: function() { return this.gender == "Female"; }, 

    filterSalaries: function() { 
     if (this.salary >= 300) { 
      return this.name; 
     } 
    } 
}; 

function Employee (name, salary, gender) { 
    this.name = name; 
    this.salary = salary; 
    this.gender = gender; 
}; 

Employee.prototype = EmployeeBlueprint; 

var Matt = new Employee("Matt", 100, "Male"); 
var Alex = new Employee("Alex", 200, "Male"); 
var Zack = new Employee("Zack", 300, "Male"); 
var Mark = new Employee("Mark", 400, "Male"); 
var Rick = new Employee("Rick", 500, "Male"); 
+0

的方式,你通常接近一个问题,像这将是把所有对象到一个数组('VAR allEmpoyees = [马克,亚历克斯,...]'),然后筛选阵列来获得结果数组。 – 2015-02-09 00:54:50

回答

1

摆脱这些变量并将它们存储在数组中以开始。

var emps = [ 
    new Employee("Matt", 100, "Male"), 
    new Employee("Alex", 200, "Male"), 
    new Employee("Zack", 300, "Male"), 
    new Employee("Mark", 400, "Male"), 
    new Employee("Rick", 500, "Male") 
]; 

然后.filter()阵列,让您减少集和.map():被设置为名称。

var low_salary_names = emps.filter(function(emp) { 
    return emp.salary <= 300; 
}).map(function(emp) { 
    return emp.name; 
}); 
相关问题