2015-02-09 68 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; 
}); 
相關問題