不断获取数组中元素的数量作为一种JavaScript

时间:2019-07-15 08:03:57

标签: javascript arrays

我正在尝试获取登录的人数,并且有一个循环遍历带有条件的列表,但是它将数组中的元素数显示为一个

我尝试使用forEach循环和for循环计数器

employees.forEach(employee => {
        if(employee.clockIn == true){
          const arr=[]
          arr.push(employee.firstName)
          console.log(arr.length);
        }
      })

预期结果是两个,但是我一直得到1和一个小圆圈,该小圆圈在控制台中具有2,但是在DOM中输出为1

3 个答案:

答案 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);
    }
});