代码之家  ›  专栏  ›  技术社区  ›  nsayer

使用条件计算数组中的对象数

  •  -2
  • nsayer  · 技术社区  · 7 年前

    我有一个类似于此的对象数组:

    const myArray = [
        {
            message: "foo",
            seen: false
        },
        {
            message: "bar",
            seen: false
        },
        {
            message: "foobar"
            seen: true
        }
    ];
    

    我想计算数组中的对象数 seen 属性设置为 false

    我知道如何使用经典的For循环,但我想知道是否有更有效的方法?

    谢谢你,非常感谢你的帮助。

    编辑:以下是我的for循环代码

    var count = 0;
        for (var x in myArray) {
            if(!x.seen) {
                count++;
            }
        }
    

        var count = 0;
        myArray.forEach(e => {
            if(!e.seen) {
                count++;
            }
        })
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   wisn    7 年前

    你可以使用 filter

    const myArray = [
      {
        message: "foo",
        seen: false,
      },
      {
        message: "bar",
        seen: false,
      },
      {
        message: "foobar",
        seen: true,
      },
    ];
    
    const result = myArray.filter(x => !x.seen).length;
    
    console.log(result);
        2
  •  0
  •   Joseba    7 年前

    答案就在这里。 https://stackoverflow.com/a/49105977/6192621

    最快的方法是反向简单循环。

    for(i = myArray.length - 1; i > 0; i--) if(!myArray[i].seen) count++;