所以我总共有三个嵌套的关联对象/数组。首先制作Employee1和employee2,然后创建员工以嵌套两个关联对象。接下来,我创建了第三个关联对象employee3,以嵌套到employees对象中。我现在要做的是使用.filter()方法过滤2D数组,只调出当前在那里工作的员工,这在数组中用[“isCurrent”] = true表示;但我在控制台窗口中得到的所有内容都是未定义的。为什么会发生这种情况,我该如何解决这个问题?
var employee1 = [];
employee1["id"] = 33;
employee1["name"] = "Carey Shanks";
employee1["title"] = "Knife Maker";
employee1["department"] = "fabrication";
employee1["isCurrent"] = true;
var employee2 = [];
employee2["id"] = 34;
employee2["name"] = "Giles Newman";
employee2["title"] = "Lead Sales";
employee2["department"] = "Customer Service";
employee2["isCurrent"] = true;
var employees = [];
employees[0] = [];
employees[0]["id"] = 33;
employees[0]["name"] = "Carey Shanks";
employees[0]["title"] = "Knife Maker";
employees[0]["department"] = "fabrication";
employees[0]["isCurrent"] = true;
var employee3 = [];
employee3["id"] = 35;
employee3["name"] = "Tori G.";
employee3["title"] = "Product Demonstrator";
employee3["department"] = "Marketing";
employee3["isCurrent"] = false;
//MERING THE ARRAYS
employees.push(employee2);
employees.push(employee3);
//TESTING TO SEE IF IT POPULATED
//window.console.log(employees);
var i;
var currentEmployee = function (isCurrent) {
var isCurrentEmployee = true;
for (i in employees) {
if (isCurrent !== true) {
isCurrentEmployee = false;
break;
}
}
return isCurrentEmployee;
};
var isCompanyEmployee = employees.filter(currentEmployee);
window.console.log(isCompanyEmployee[i]);
一些问题:
filter
回调的第一个参数是迭代的当前项;您的
var currentEmployee = function (isCurrent) {
将isCurrent
定义为第一个参数,但这不是isCurrent
属性。如果您想立即从对象中提取isCurrent
属性,请改为对该参数进行解构,然后您可以返回它:
var currentEmployee = function ({ isCurrent }) {
return isCurrent;
}
或者,如果你对解构不满意,这相当于
var currentEmployee = function (employee) {
return employee.isCurrent;
}
i
在currentEmployee
函数之外没有任何意义 - 记录过滤后的数组:
console.log(isCompanyEmployee);
employee1
推到阵列。var employee1 = {};
employee1["id"] = 33;
employee1["name"] = "Carey Shanks";
employee1["title"] = "Knife Maker";
employee1["department"] = "fabrication";
employee1["isCurrent"] = true;
var employee2 = {};
employee2["id"] = 34;
employee2["name"] = "Giles Newman";
employee2["title"] = "Lead Sales";
employee2["department"] = "Customer Service";
employee2["isCurrent"] = true;
var employees = [];
employees[0] = {};
employees[0]["id"] = 33;
employees[0]["name"] = "Carey Shanks";
employees[0]["title"] = "Knife Maker";
employees[0]["department"] = "fabrication";
employees[0]["isCurrent"] = true;
var employee3 = {};
employee3["id"] = 35;
employee3["name"] = "Tori G.";
employee3["title"] = "Product Demonstrator";
employee3["department"] = "Marketing";
employee3["isCurrent"] = false;
//MERING THE ARRAYS
employees.push(employee1);
employees.push(employee2);
employees.push(employee3);
//TESTING TO SEE IF IT POPULATED
//window.console.log(employees);
var i;
var currentEmployee = function ({ isCurrent }) {
return isCurrent;
};
var currentEmployees = employees.filter(currentEmployee);
window.console.log(currentEmployees);