如何一次调用同一构造函数中的所有对象?
问题描述:
我是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");
答
摆脱这些变量并将它们存储在数组中以开始。
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;
});
的方式,你通常接近一个问题,像这将是把所有对象到一个数组('VAR allEmpoyees = [马克,亚历克斯,...]'),然后筛选阵列来获得结果数组。 – 2015-02-09 00:54:50