【问题标题】:Get a specific item length in array object [nodejs]获取数组对象中的特定项目长度 [nodejs]
【发布时间】:2020-03-30 00:19:54
【问题描述】:

我想得到一个与条件指定的值匹配的数组的长度。

var school = {
    student : {
        name: Json,
        class: 0,
        type: male,
        average: B+
    },
    student : {
        name: Afrado,
        class: 0,
        type: male,
        average: C+
    },
    student : {
        name: Emily,
        class: 1,
        type: female,
        average: A+
    }
};

我想知道“0”类的长度 但我不知道如何解决这个问题?
在这种情况下,我的结果可以得到“2”的长度。

祝你有美好的一天~:)

【问题讨论】:

    标签: arrays node.js object


    【解决方案1】:

    你也可以这样使用:

    var school = [
      {
        name: "Json",
        class: 0,
        type: "male",
        average: "B+"
      },
      {
        name: "Afrado",
        class: 0,
        type: "male",
        average: "C+"
      },
      {
        name: "Emily",
        class: "1",
        type: "female",
        average: "A+"
      }
    ];
    
    function search(className, myArray){
        var countClass = 0;
        for (var i=0; i < myArray.length; i++) {
            if (myArray[i].class === className) {
                countClass++;
            }
        }
        return countClass;
    }
    
    function searchForeach(className, myArray){
        var countClass = 0;
        myArray.forEach((item) => {
          if (item.class === className) {
            countClass++;
          }
        });
        return countClass;
    }
    
    function searchFind(className, myArray){
        var countClass = 0;
        myArray.find((item, index) => {
          if (item.class === className) {
            countClass++;
          }
        });
        return countClass;
    }
    
    
    
    
    console.log(search(0, school));
    console.log(searchForeach("1", school));
    console.log(searchFind(0, school));

    第二种方式使用find:

    【讨论】:

      【解决方案2】:

      您可以使用reduce函数来避免使用过滤器创建临时数组。

      console.log(school.reduce((count, student) => student.class === 0 ? ++count : count, 0));
      

      【讨论】:

        【解决方案3】:

        您的数组结构不正确,您需要做的是filter 并获取已过滤项目的length

        var school = [
          {
            name: "Json",
            class: 0,
            type: "male",
            average: "B+"
          },
          {
            name: "Afrado",
            class: 0,
            type: "male",
            average: "C+"
          },
          {
            name: "Emily",
            class: "1",
            type: "female",
            average: "A+"
          }
        ];
        
        console.log(school.filter(student => student.class === 0).length);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-09-27
          • 2015-06-07
          • 1970-01-01
          • 1970-01-01
          • 2013-12-19
          • 2018-06-16
          相关资源
          最近更新 更多