我正在尝试获取登录的人数,并且有一个循环遍历带有条件的列表,但是它将数组中的元素数显示为一个
我尝试使用forEach循环和for循环计数器
employees.forEach(employee => {
if(employee.clockIn == true){
const arr=[]
arr.push(employee.firstName)
console.log(arr.length);
}
})
预期结果是两个,但是我一直得到1和一个小圆圈,该小圆圈在控制台中具有2,但是在DOM中输出为1
答案 0 :(得分:1)
const创建一个块范围变量,因此每次(employee.clockIn == true)
求值为true
时,arr
都会重新创建为一个空数组。您应该在外部范围内创建arr
,或者使用更多的功能性方法,例如利用Array.prototype.filter:
const clockedInEmployees = employees.filter(emp => emp.clockIn);
console.log(clockedInEmployees.length)
答案 1 :(得分:1)
根据建议,您需要在循环的每个迭代中创建一个新数组。
更简单的方法可能是使用filter
var clockInEmployees = employees.filter(employee => employee.clockIn);
答案 2 :(得分:0)
您将在每次迭代中重新创建数组,您可能希望在循环外提升数组的声明:
const arr = [];
employees.forEach(employee => {
if(employee.clockIn == true){
arr.push(employee.firstName)
console.log(arr.length);
}
});